
np.sum(a**2,axis=1)**.5 # where a is a 2 dimensional ndarray
该 *** 作由三个函数组成,需要三次迭代’a’.在一个函数下聚合所有 *** 作并沿轴1仅应用该函数会更有效.不幸的是,numpy的apply_along_axis函数不是一个选项,因为性能大约是x1000差.
有没有办法聚合几个numpy *** 作,所以它只需要在数组上循环一次?
解决方法 使用浮点数组时,可以使用np.einsum – np.sqrt(np.einsum('ij,ij->i',a,a)) 运行时测试 –
In [34]: a = np.random.rand(1000,1000)In [35]: np.allclose(np.sum(a**2,axis=1)**.5,np.sqrt(np.einsum('ij,a)))Out[35]: TrueIn [36]: %timeit np.sum(a**2,axis=1)**.5100 loops,best of 3: 7.57 ms per loopIn [37]: %timeit np.sqrt(np.einsum('ij,a))1000 loops,best of 3: 1.52 ms per loop 总结 以上是内存溢出为你收集整理的python – 聚合numpy函数全部内容,希望文章能够帮你解决python – 聚合numpy函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)