Numpy数组复制最后一列失效问题求助
问题分析与解决:Numpy数组切片未包含最后一列
问题出在你使用的切片3:-1上——Numpy的切片遵循左闭右开规则,也就是切片[start:end]会包含start索引的元素,但不包含end索引的元素。
在你的7列数组中,列索引范围是0到6,-1对应的是最后一列的索引(6),所以3:-1实际选取的是索引3到5的元素(包含3,不包含6),自然就漏掉了最后一列。
解决方法
把切片改成3:即可,省略end参数时,切片会自动延伸到数组的最后一个元素:
import numpy as np A = np.random.rand(3,7) B = np.ones([3,7]) # 用3:代替3:-1,包含从索引3到最后一列的所有元素 B[2,3:] = A[2,3:] print("A") print(A) print("B") print(B)
修改后,B数组第2行的索引3到最后一列都会被A的对应值覆盖,包括最后一列。
另外,你也可以显式指定结束索引为数组的列数(比如3:7),但3:的写法更简洁通用,不需要依赖具体的列数。
内容的提问来源于stack exchange,提问作者Sumith Yesudasan
相关产品推荐
相关产品推荐

