我想在不同时间将numpy数组中的列设置为零,换句话说,我有大小为5000x500的numpy数组M。当我输入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

最佳答案

您正在执行此操作:

M[:][0] = 0


但是您应该这样做:

M[:,0] = 0


第一个是错误的,因为M[:]只是为您提供了整个数组,例如M。然后[0]给出第一行。

同样,M[0][:]也会为您提供第一行,因为[:]仍然无效。

关于python - 将numpy数组中的列设置为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37251992/

10-12 14:28