草庐IT

python - numpy.sum 可能比 Python for 循环慢

当在特定轴上对数组求和时,专用数组方法array.sum(ax)实际上可能比for循环慢:v=np.random.rand(3,1e4)timeitv.sum(0)#vectorizedmethod1000loops,bestof3:183usperlooptimeitforrowinv[1:]:v[0]+=row#pythonloop10000loops,bestof3:39.3usperloop矢量化方法比普通的for循环慢4倍以上!(wr)on(g)这里发生了什么,我不能相信numpy中的向量化方法比for循环更快吗? 最佳答案

python - Numpy __getitem__ 延迟评估和 a[-1 :] not the same as a[slice(-1, None, none)]

所以这是关于我假设的两个问题与我的基本相同的基本混淆。我希望没关系。这里有一些代码:importnumpyasnpclassnew_array(np.ndarray):def__new__(cls,array,foo):obj=array.view(cls)obj.foo=fooreturnobjdef__array_finalize__(self,obj):print"__array_finalize"ifobjisNone:returnself.foo=getattr(obj,'foo',None)def__getitem__(self,key):print"__getitem__

python - 如何使用 NumPy+MKL 避免这种四行内存泄漏?

以下简单的四行代码在我的Python2.6.6/NumPy1.7.0/MKL10.3.6设置中产生内存泄漏:importnumpyasnpt=np.random.rand(10,10)whileTrue:t=t/np.trace(t)每次操作,使用的内存都会增加10x10矩阵的大小。但是,当我使用NumPy1.4.1/ATLAS设置时,没有这种行为。我读到过MKL不一定会自动释放内存,所以我想这就是崩溃的原因。是否有一种简单的方法来修改NumPy(在编译之前或之后),以便这个四行代码可以正常工作?np.show_config()的输出numpy1.7.0lapack_opt_info:

python - 错误或本应是 : numpy raises "ValueError: too many boolean indices" for repeated boolean indices

我在实验宇宙学中做一些模拟,在使用numpy数组时遇到了这个问题。我是numpy的新手,所以我不确定我是否做错了或者这是一个错误。我跑:EnthoughtPythonDistribution--www.enthought.comVersion:7.3-1(32-bit)Python2.7.3|EPD7.3-1(32-bit)|(default,Apr122012,11:28:34)[GCC4.0.1(AppleInc.build5493)]ondarwinType"credits","demo"or"enthought"formoreinformation.>>>importnumpy

python - 优雅的 numpy 数组移位和 NaN 填充?

我这里有一个特定的性能问题。我正在处理气象预报时间序列,我将其编译成一个numpy二维数组,这样dim0=预测系列开始的时间dim1=预测范围,例如。0到120小时现在,我希望dim0以小时为间隔,但某些来源仅每N小时产生一次预测。例如,假设N=3并且dim1中的时间步长为M=1小时。然后我得到类似的东西12:0011.212.214.015.011.312.013:00nannannannannannan14:00nannannannannannan15:0014.711.512.213.014.315.1但是当然也有13:00和14:00的信息,因为它可以从12:00的预测运行开始

python - 不同维度的 Numpy 数组广播

我对numpy的广播规则有点困惑。假设你想对一个更高维度的数组进行轴方向的标量乘积,以将数组维度减一(基本上是沿着一个轴执行加权求和):fromnumpyimport*A=ones((3,3,2))v=array([1,2])B=zeros((3,3))#V01:thisworksB[0,0]=v.dot(A[0,0])#V02:thisworksB[:,:]=v[0]*A[:,:,0]+v[1]*A[:,:,1]#V03:thisdoesn'tB[:,:]=v.dot(A[:,:])为什么V03不工作?干杯 最佳答案 np.dot

python - Cython:numpy 数组的无符号整数索引给出不同的结果

我通过添加一些类型并编译它,将python函数转换为cython。我在python和cython函数的结果之间得到了很小的数值差异。经过一些工作后,我发现不同之处在于使用unsignedint而不是int访问numpy数组。我使用unsignedint索引来加速访问,根据:http://docs.cython.org/src/userguide/numpy_tutorial.html#tuning-indexing-further无论如何,我认为使用无符号整数是无害的。查看这段代码:cpdeffunction(np.ndarray[np.float32_t,ndim=2]respons

python - numpy:如何加入数组? (获得几个范围的联合)

我将Python与numpy结合使用。我有一个numpy索引数组a:>>>aarray([[5,7],[12,18],[20,29]])>>>type(a)我有一个numpy索引数组b:>>>barray([[2,4],[8,11],[33,35]])>>>type(b)我需要将数组a与数组b连接起来:a+b=>[2,4][5,7][8,11][12,18][20,29][33,35]=>a和b有索引数组=>[2,18][20,29][33,35](索引([2,4][5,7][8,11][12,18])按顺序进行=>2,3,4,5,6,7,8,9,10,11,12,13,14,15,1

python - 我如何判断一个 numpy bool 数组是否只包含一个 `True` block ?

如果我有一个包含bool值的numpy数组,比如一些数学比较的输出,确定该数组是否仅包含一个连续的Trueblock的最佳方法是什么,例如array([False,False,False,True,True,True,False,False,False],dtype=bool)即序列...,True,False,...,True...从未出现过? 最佳答案 numpy.diff在这种情况下很有用。您可以计算diff中-1的数量。编辑数组。请注意,您还需要检查最后一个元素——如果它为True,则diff中不会有-1。编辑数组以表明这一

python - 获取轴上 numpy.argmax 元素的索引

我有一个N维矩阵,其中包含具有N个参数的函数的值。每个参数都有离散数量的值。我需要最大化除一个参数之外的所有参数的函数,从而生成大小等于非最大化参数的值数的一维向量。我还需要保存其他参数采用的值。为此,我想在不同的轴上迭代应用numpy.max以降低矩阵的维数以找到我需要的内容。最终向量将仅取决于我遗漏的参数。但是,我无法找到最终元素的原始索引(其中包含有关其他参数所取值的信息)。我想以与numpy.max相同的方式使用numpy.argmax但我无法取回原始索引。我正在尝试的一个例子是:x=[[[1,2],[0,1]],[[3,4],[6,7]]]args=np.argmax(x,0