【发布时间】:2021-07-29 08:59:31
【问题描述】:
尝试基于row index position应用numpy内置函数apply_along_axis
import numpy as np
sa = np.array(np.arange(4))
sa_changed = (np.repeat(sa.reshape(1,len(sa)),repeats=2,axis=0))
print (sa_changed)
操作:
[[0 1 2 3]
[0 1 2 3]]
功能:
np.apply_along_axis(lambda x: x+10,0,sa_changed)
操作:
array([[10, 11, 12, 13],
[10, 11, 12, 13]])
但是有没有办法基于row index position使用这个函数,例如,如果它是even row index,那么add 10,如果它是odd row index,那么add 50
示例:
def func(x):
if x.index//2==0:
x = x+10
else:
x = x+50
return x
【问题讨论】:
-
apply_along_axis不是速度工具。它可以使代码看起来更漂亮,尤其是当数组是 3d 或更大时,但它不会更快。 -
顺便说一句,
//是整数除法,而不是模数 -
@hpaulj 感谢您的解决方案。对于更快的方法,您还有其他建议吗?不是确切的代码,只是建议就可以了。
标签: python python-3.x numpy numpy-ndarray numpy-ufunc