将narray除以它自己的列下标



我有这个numpy narray:

myarray = np.array([[[ 1.,  2.,  3.],
                     [ 1.,  2.,  3.]],
                     [[ 4.,  5.,  6.],
                      [ 4.,  5.,  6.]]])

是否有任何向量操作,我可以做除以每个值在narray(值自己的列索引+ 1)?

Result I want is

[[[1., 1., 1.],
 [1., 1., 1.]],
 [[4., 2.5, 2.],
 [4., 2.5, 2.]]]

谢谢。

您可以使用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的)索引:

axis = 1
myarray / (1 + np.indices(myarray.shape)[axis])

相关内容

  • 没有找到相关文章

最新更新