Tag: numpy

NumPy的math函数比Python更快吗?

我有一个由基本的math函数(abs,cosh,sinh,exp,…)组合定义的函数。 我想知道是否使用(例如, numpy.abs()而不是abs()什么numpy.abs() ?

如何将一个pandas DataFrame列和行的子集转换成一个numpy数组?

我想知道是否有一种更简单,高效的内存方法来从pandas数据框中select行和列的子集。 例如,给定这个数据框: df = DataFrame(np.random.rand(4,5),columns = list('abcde')) 打印df ABCDE 0 0.945686 0.000710 0.909158 0.892892 0.326670 1 0.919359 0.667057 0.462478 0.008204 0.473096 2 0.976163 0.621712 0.208423 0.980471 0.048334 3 0.459039 0.788318 0.309892 0.100539 0.753992 我只想要列'c'的值大于0.5的那些行,但是我只需要那些行的列'b'和'e'。 这是我提出的方法 – 也许有一个更好的“pandas”方式? locs = [[a','d']]中的[df.columns.get_loc(_)] 打印df [df.c> 0.5] [locs] 广告 0 0.945686 0.892892 我的最终目标是将结果转换为一个numpy数组传递给sklearn回归algorithm,所以我将使用上面的代码: training_set = array(df [df.c> 0.5] [locs]) […]

用NumPy快速旋转张量

在应用程序的核心(用Python编写,使用NumPy )我需要旋转一个四阶张量。 实际上,我需要旋转许多张力,这是我的瓶颈。 我涉及八个嵌套循环的天真实现(下面)似乎很慢,但是我看不到一种方法来利用NumPy的matrix运算,希望能够加快速度。 我有一种感觉,我应该使用np.tensordot ,但我不知道如何。 在math上,旋转张量的元素T'由下式给出:其中,总和在右侧的重复指数之上。 T和Tprime是3 * 3 * 3 * 3的NumPy数组,旋转matrixg是3 * 3的NumPy数组。 我的执行速度很慢(每次调用时间大约为0.04秒)。 #!/usr/bin/env python import numpy as np def rotT(T, g): Tprime = np.zeros((3,3,3,3)) for i in range(3): for j in range(3): for k in range(3): for l in range(3): for ii in range(3): for jj in range(3): for kk […]

numpy float:在算术运算中比内build速度慢10倍?

下面的代码我正在得到非常奇怪的计时: import numpy as np s = 0 for i in range(10000000): s += np.float64(1) # replace with np.float32 and built-in float 内置浮动:4.9秒 float64:10.5 s float32:45.0 s 为什么float64比float更慢两倍? 为什么float32比float64慢5倍? 有没有办法避免使用np.float64的惩罚,并有numpy函数返回内置的float而不是float64 ? 我发现使用numpy.float64比Python的float慢得多,而numpy.float32甚至更慢(即使我在32位机器上)。 numpy.float32在我的32位机器上。 因此,每次我使用numpy.random.uniform等各种numpy函数,我将结果转换为float32 (以便进一步的操作将以32位精度执行)。 有什么办法可以在程序或命令行中设置一个单独的variables,并使所有numpy函数返回float32而不是float64 ? 编辑#1: numpy.float64比算术计算中的浮点数慢10倍 。 这是非常糟糕的,甚至转换为浮动和返回之前的计算使程序运行速度提高3倍。 为什么? 有什么我可以做的,以解决它? 我想强调,我的时间不是由于以下任何一种情况: 函数调用 numpy和python float之间的转换 对象的创build 我更新了代码,使问题更加清楚。 使用新的代码,使用numpy数据types看起来会使性能下降十倍: from datetime import datetime import […]

列表到数组的转换

我有一个Python中的列表,我想将其转换为一个数组,以便能够使用ravel()函数。

删除numpy数组中的行

我有一个数组,可能看起来像这样: ANOVAInputMatrixValuesArray = [[ 0.96488889, 0.73641667, 0.67521429, 0.592875, 0.53172222], [ 0.78008333, 0.5938125, 0.481, 0.39883333, 0.]] 注意其中一行在最后有一个零值。 我想删除任何包含零的行,同时保留所有单元格中包含非零值的行。 但是,每次填充时,数组的行数都不相同,而且每次都将位于不同的行中。 我用下面这行代码得到了每一行中非零元素的数量: NumNonzeroElementsInRows = (ANOVAInputMatrixValuesArray != 0).sum(1) 对于上面的数组, NumNonzeroElementsInRows包含:[5 4] 这五个表示行0中的所有可能的值都是非零,而四则表示行1中的一个可能的值是零。 因此,我试图使用下面的代码行来查找和删除包含零值的行。 for q in range(len(NumNonzeroElementsInRows)): if NumNonzeroElementsInRows[q] < NumNonzeroElementsInRows.max(): p.delete(ANOVAInputMatrixValuesArray, q, axis=0) 但由于某种原因,这段代码似乎没有做任何事情,即使执行了大量的打印命令,表明所有的variables似乎都正确地填充到代码中。 必须有一些简单的方法来简单地“删除任何包含零值的行”。 任何人都可以告诉我要写什么代码来完成这个?

将csv加载到二维matrix中,绘制为numpy

鉴于这个CSV文件: "A","B","C","D","E","F","timestamp" 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12 我只是想加载它作为matrix/ ndarray 3行7列。 然而,由于某种原因,所有我可以摆脱numpy是一个3行(每行一),没有列的ndarray。 r = np.genfromtxt(fname,delimiter=',',dtype=None, names=True) print r print r.shape [ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)] (3,) 我可以手动迭代并将其转换成我想要的形状,但这似乎很愚蠢。 我只是想加载它作为一个适当的matrix,所以我可以切片在不同的维度和绘制,就像在MATLAB中。

pandas:结合string和int列

我有一个下面的DataFrame : from pandas import * df = DataFrame({'foo':['a','b','c'], 'bar':[1, 2, 3]}) 它看起来像这样: bar foo 0 1 a 1 2 b 2 3 c 现在我想有这样的东西: bar 0 1 is a 1 2 is b 2 3 is c 我怎样才能做到这一点? 我尝试了以下内容: df['foo'] = '%s is %s' % (df['bar'], df['foo']) 但它给了我一个错误的结果: >>>print df.ix[0] bar a foo 0 […]

Python中的主成分分析(PCA)

我有一个(26424 x 144)数组,我想用Python执行PCA。 然而,在networking上没有特别的地方可以解释如何完成这个任务(有些网站只是根据自己的需要来做PCA–没有一个通用的方法可以find)。 任何有帮助的人都会做得很好。

如何在创buildmatplotlib数字后释放内存

我有几个matlpotlib函数卷入一些Django芹菜任务。 每次任务被称为更多的RAM专用于Python。 太久之前,python占用了所有的RAM。 问题:我如何释放这个内存? 更新2 – 第二个解决scheme: 我问了一个类似的问题,特别是有关matplotlib错误时locking的内存,但我得到了一个很好的答案。如果使用多gc.collect()运行,则不需要gc.collect()和gc.collect()绘图function在一个单独的进程中,一旦进程结束,内存将自动释放。 Matplotlib错误导致内存泄漏。 我怎样才能释放内存? 更新 – 解决scheme: 这些stackoverflowpostbuild议我可以释放matplotlib对象使用的内存与以下命令: .clf() : 在绘制循环时,Matplotlib内存不足 .close() : Python matplotlib:指定graphics大小时,内存不会被释放 import gc gc.collect() 以下是我用来testing解决scheme的示例: import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from pylab import import figure, savefig import numpy as np import gc a = np.arange(1000000) b = np.random.randn(1000000) fig = plt.figure(num=1, dpi=100, facecolor='w', […]