pythonnumpy:在特定索引n处的指定列上插入数组

2024-10-02 22:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有以下numpy数组:

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

我怎样才能插入这个np.数组在

^{pr2}$

从第1列和第2列的索引nr3开始,最后看起来像这样:

[[ 0  0  0]
 [ 1  0  0]
 [ 2  0  45]
 [ 3  1  34]
 [ 4  2  23]
 [ 5  3  56]
 [ 6  4  45]
 [ 7  5  34]
 [ 8  0  0]
 [ 9  0  0]
 [10  0  0]
 [11  0  0]
 [12  0  0]]

我想指定索引nr,第二个数组应该放在第一个数组中。如果能考虑到执行速度,我将不胜感激。两个数组都有几百万行,第一个数组总是比第二个数组大。在


Tags: numpynp数组nr速度pr2nr3
1条回答
网友
1楼 · 发布于 2024-10-02 22:35:15

只需使用切片索引定义收件人空间:

In [79]: arr = np.zeros((10,3),int)    
In [80]: b = np.ones((4,2), int)
In [81]: nr = 3
In [82]: arr[nr:nr+b.shape[0], 1:] = b

In [83]: arr
Out[83]: 
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 1, 1],
       [0, 1, 1],
       [0, 1, 1],
       [0, 1, 1],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])

只需确保形状匹配:

^{pr2}$

您可以优化索引以处理nr太大而无法容纳arr中所有的{}的情况。在

相关问题 更多 >