如何将元素放在np数组中的特定位置



我用Python 3.6编写,使用Numpy 1.20.1。问题是,我有一个np.ndarray,叫做A,大小为(10, 3),还有一个np.ndarray,叫做B,大小为(4, 3)。对于大小为3的4个数组,我想将它们放在第一个数组中的4个特定位置。

例如:

A = np.zeros((10, 3))
B = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
idx = [7,3,1,4]

我想把BA中的每一行按idx的顺序排列。所以转换后,A应该看起来像:

[0, 0, 0],
[7, 8, 9],
[0, 0, 0],
[4, 5, 6],
[10, 11, 12],
[0, 0, 0],
[0, 0 ,0],
[1, 2, 3],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0].

我特别想知道是否有可能在一行代码中完成这一点。

我尝试了A[idx] = B,它给了我错误:IndexError: too many indices for array

Numpy版本一行。

A = np.zeros((10, 3)) 
B = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]]) 
idx = [7,3,1,4] 
            
A[idx] = B[ np.arange(B.shape[0]) ]  # Source from B.shape

a[idx] = B[[0,1,2,3]]   # Source as constants

你的代码对我来说工作得很好。
对于这个问题,你可以试试:

for i, row in zip(idx, B):
A[i] = row

相关内容

  • 没有找到相关文章

最新更新