我试图复制特定行的特定列范围并复制到另一个数组。
我在下面包含了一个最小的工作示例。
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中。