草庐IT

numpy-ufunc

全部标签

python - 优化 numpy 中的内存使用

以下程序使用PyGame加载两个图像,将它们转换为Numpy数组,然后执行一些其他Numpy操作(例如FFT)以发出最终结果(几个数字)。输入可以很大,但在任何时候都应该只有一两个大对象是事件的。一张测试图像大约有1000万像素,灰度化后相当于10MB。它被转换为dtypeuint8的Numpy数组,经过一些处理(应用Hamming窗口)后,它是dtypefloat64的数组。两张图片以这种方式加载到数组中;后面的FFT步骤会生成dtypecomplex128的数组。在添加过多的gc.collect调用之前,程序内存大小往往会随着每一步而增加。此外,似乎大多数Numpy操作都会给出可用

Python 列表/字典与 numpy 数组 : performance vs. 内存控制

我必须反复读取数据文件并将数据存储到(numpy)数组中。我选择将数据存储到“数据字段”字典中:{'field1':array1,'field2':array2,...}。案例1(列表):使用列表(或collections.deque())“附加”新数据数组,代码高效。但是,当我连接存储在列表中的数组时,内存增长并且我没有设法再次释放它。示例:filename='test'#datafilewithamatrixofshape(98,56)nFields=56#InitializedatadictionaryandlistoffieldsdataDict={}#datadirector

python - 从 numpy 数组中删除多个切片

我有一个给定的numpy数组和一个包含多个切片对象的列表(或者包含(start,end)元组)。我希望从原始数组中删除切片对象位置,并获得具有剩余值的第二个数组。玩具示例:myarray=np.arange(20)array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])mylist=(slice(2,4),slice(15,19))做某事,结果应该是array([0,1,5,6,7,8,9,10,11,12,13,14])数组可以是几十万大,切片对象列表可以包含几千个元素,我需要经常运行操作,所以速度有点重要。据我所知,Num

python - 在安装 Python 3.4 的同时为 Python 2.7 安装 numpy?

我同时拥有Python2.7和Python3.4(并且必须同时拥有这两者,因为对于我正在运行的类(class),学生可以选择使用其中之一)。一名学生在他们的项目中使用了Python2.7和numpy,但是当我尝试安装numpy时,它安装到3.4。我需要将它安装到2.7。我正在使用来自该站点的numpy1.9,有人告诉我它也是2.7特定的:http://sourceforge.net/projects/numpy/files/NumPy/但是,它仍然会进入3.4文件夹。显然,将它复制到Python2.7是行不通的。我该怎么做? 最佳答案

python - 如何使用来自对函数的单独调用的值快速填充 numpy 数组

我想用生成的值填充一个numpy数组。这些值由生成器函数生成。数组长度不太长,通常到目前为止,我已经可以用vanillapython做到这一点:defgenerate():returngenerated_dataarray=np.asarray([generate()for_inrange(array_length)])我也尝试过使用np.full(shape,fill_value):np.full((array_length,generated_data_size),generate())但这是只调用一次generate()函数,而不是对数组中的每个索引调用一次。我也尝试过np.ve

python - 根据总和对numpy数组进行排序

我想根据总和对一个numpy数组进行排序。有点像importnumpyasnpa=np.array([1,2,3,8],[3,0,2,1])b=np.sum(a,axis=0)idx=b.argsort()现在np.take(a,idx)导致[2,1,3,8]。但我想要一个数组:result=np.array([2,1,3,8],[0,3,2,1]]最聪明、最快的方法是什么? 最佳答案 使用您问题中的相同代码,您可以只使用可选的axis参数np.take(默认使用展平数组,这就是你得到的原因仅第一行,请参阅documentation

python - Numpy distutils 指南

我花了将近一个小时在谷歌上搜索解决方案,但numpy.distutils的文档非常少。我有一个f2py封装的模块。它主要由3个文件组成:a.f90a.pyflib.a使用以下shell脚本命令可以很好地编译该模块。f2py--build-dirtemp-ca.pyfa.f90lib.a--fcompiler=gnu95--fcompiler-flags="Zillionsofcompileroptions"结果,我有了python模块a.so(名称在.pyf文件中指定)。我如何使用numpy.distutils(或其他一些面向python的构建工具)来做到这一点?一个不太重要的问题是,

python - 在 numpy 中迭代两个数组,没有 nditer?

考虑numpy数组的规范,通常用于指定matplotlib绘制数据:t=np.arange(0.0,1.5,0.25)s=np.sin(2*np.pi*t)基本上,这会将我们的(x,y)数据点的x坐标存储在数组t中;以及数组s中的结果y坐标(y=f(x)的结果,在本例中为sin(x))。然后,可以很方便的使用numpy.nditer函数获取t和s中连续的entry对,代表(x,y)数据点的坐标,如:forx,yinnp.nditer([t,s]):print("xy:%f:%f"%(x,y))因此,我尝试将以下代码段作为test.py:importnumpyasnpprint("num

Python:帮助(numpy)导致退出时出现段错误

我遇到了一个奇怪的事情:在python解释器中,我做了以下事情:>>>importnumpy>>>help(numpy)帮助显示正确,但我一按q返回解释器:Segmentationfault(coredumped)我不知道是什么导致了段错误,如果我使用本地名称(典型的np)导入numpy,它仍然会发生。任何其他库都不会发生这种情况。我尝试卸载并重新安装numpy,但这没有任何区别。numpy太大而无法以这种方式处理还是我的解释器有问题?我该如何解决这个问题?我正在运行Ubuntu13.0432位并使用Python2.7.4。更新:PYTHONSTARTUP和PYTHONPATH都是空的

python - 性能比较Fortran,Numpy,Cython和Numexpr

我有以下功能:defget_denom(n_comp,qs,x,cp,cs):'''len(n_comp)=1#numberofproteinslen(cp)=n_comp#proteinconcentrationlen(qp)=n_comp#proteincapacitylen(x)=3*n_comp+1#fitparameterslen(cs)=1'''k=x[0:n_comp]sigma=x[n_comp:2*n_comp]z=x[2*n_comp:3*n_comp]a=(sigma+z)*(k*(qs/cs)**(z-1))*cpdenom=np.sum(a)+csreturn