我想在不同的时间将numpy数组中的列设置为零,换句话说,我有numpy数组M
,大小为5000x500。当我输入shape命令时,结果是(5000,500),我认为5000是行,500是列
shape(M)
(5000,500)
但是当我想像第一列
那样访问一个列时出现问题Mcol=M[:][0]
然后我用新矩阵Mcol
shape(Mcol)
(500,)
我预计结果将是(5000,)因为第一个有5000行。即使改变了操作,结果也是一样的
shape(M)
(5000,500)
Mcol=M[0][:]
shape(Mcol)
(500,)
任何帮助请解释我的代码中发生的事情以及以下操作是否正确将一列设置为零
M[:][0]=0
答案 0 :(得分:3)
你这样做:
M[:][0] = 0
但你应该这样做:
M[:,0] = 0
第一个是错误的,因为M[:]
只会为您提供整个数组,例如M
。然后[0]
为您提供第一行。
同样,M[0][:]
也会为您提供第一行,因为[:]
再次无效。