我有这个numpy ndarray:
myarray = np.array([[[ 1., 2., 3.],
[ 1., 2., 3.]],
[[ 4., 5., 6.],
[ 4., 5., 6.]]])
是否有任何向量运算可以将ndarray中的每个值除以(值'自己的列索引+ 1)?
我想要的结果是
[[[1., 1., 1.],
[1., 1., 1.]],
[[4., 2.5, 2.],
[4., 2.5, 2.]]]
感谢。
答案 0 :(得分:1)
您可以在所有列中使用NumPy broadcasting
进行矢量化分割,如此 -
myarray/(np.arange(myarray.shape[-1])+1)
示例运行 -
In [244]: myarray
Out[244]:
array([[[ 1., 2., 3.],
[ 1., 2., 3.]],
[[ 4., 5., 6.],
[ 4., 5., 6.]]])
In [245]: myarray/(np.arange(myarray.shape[-1])+1)
Out[245]:
array([[[ 1. , 1. , 1. ],
[ 1. , 1. , 1. ]],
[[ 4. , 2.5, 2. ],
[ 4. , 2.5, 2. ]]])
答案 1 :(得分:0)
对于更一般的情况,您可以沿着某个轴除以(基于一个)索引:
axis = 1
myarray / (1 + np.indices(myarray.shape)[axis])