Numpy 将ndarray除以它自己的列索引

Numpy 将ndarray除以它自己的列索引,numpy,multidimensional-array,vectorization,Numpy,Multidimensional Array,Vectorization,我有这样一个秘密: myarray = np.array([[[ 1., 2., 3.], [ 1., 2., 3.]], [[ 4., 5., 6.], [ 4., 5., 6.]]]) 是否有任何向量操作可以将ndarray中的每个值除以(值自身的列索引+1) 我想要的结果是 [[[1., 1., 1.], [1., 1., 1.]], [[4

我有这样一个秘密:

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.]]]
谢谢。

您可以在所有列中使用矢量化分区,如下所示-

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. ]]])

对于更一般的情况,可以沿特定轴除以(基于一的)索引,其中包括:

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