Numpy数组复制最后一列不工作



我试图复制特定行的特定列范围并复制到另一个数组。

我在下面包含了一个最小的工作示例。

import numpy as np
A = np.random.rand(3,7)
B = np.ones([3,7])
B[2,3:-1] = A[2,3:-1]
print("A")
print (A)
print("B")
print (B)

输出是:

A
[[ 0.81316997  0.78075178  0.17835127  0.26448045  0.13750901  0.30405211
0.36017253]
[ 0.0167155   0.97254508  0.70175417  0.66376461  0.9168543   0.21314925
0.46779966]
[ 0.71477647  0.63700576  0.69320753  0.60782878  0.16999691  0.55042705
0.26861216]]
B
[[ 1.          1.          1.          1.          1.          1.          1.        ]
[ 1.          1.          1.          1.          1.          1.          1.        ]
[ 1.          1.          1.          0.60782878  0.16999691  0.55042705   1.        ]]

最后一个值没有复制。有人能告诉我哪里不对吗?我在等

A
[[ 0.81316997  0.78075178  0.17835127  0.26448045  0.13750901  0.30405211
0.36017253]
[ 0.0167155   0.97254508  0.70175417  0.66376461  0.9168543   0.21314925
0.46779966]
[ 0.71477647  0.63700576  0.69320753  0.60782878  0.16999691  0.55042705
0.26861216]]
B
[[ 1.          1.          1.          1.          1.          1.          1.        ]
[ 1.          1.          1.          1.          1.          1.          1.        ]
[ 1.          1.          1.          0.60782878  0.16999691  0.55042705  0.26861216  ]]

在切片中使用[2,3:]代替[2,3:-1]来包含最后一个元素

这是因为负索引从该列表的末尾向后计数,并且您在-1索引处结束切片(这是最后一个)。Python是排他性的,所以给定的end不包含在slice中。

相关内容

  • 没有找到相关文章

最新更新