将 numpy 数组中的一列设置为零

S.A*_*EEN 1 python arrays numpy python-2.7

我想在不同的时间将 numpy 数组中的一列设置为零,换句话说,我有一个M大小为 5000x500 的numpy 数组。当我输入 shape 命令时,结果是 (5000,500),我认为 5000 是行,500 是列

shape(M)
(5000,500)
Run Code Online (Sandbox Code Playgroud)

但是当我想访问像第一列这样的一列时的问题

Mcol=M[:][0]
Run Code Online (Sandbox Code Playgroud)

然后我用新矩阵再次按形状检查 Mcol

shape(Mcol)
(500,)
Run Code Online (Sandbox Code Playgroud)

我预计结果将是 (5000,),因为第一个有 5000 行。即使更改了操作,结果也是一样的

shape(M)
(5000,500)
Mcol=M[0][:]
shape(Mcol)
(500,)
Run Code Online (Sandbox Code Playgroud)

任何帮助请解释我的代码中发生的事情,以及以下操作是否正确将一列设置为零

M[:][0]=0
Run Code Online (Sandbox Code Playgroud)

Joh*_*nck 6

你这样做:

M[:][0] = 0
Run Code Online (Sandbox Code Playgroud)

但你应该这样做:

M[:,0] = 0
Run Code Online (Sandbox Code Playgroud)

第一个是错误的,因为M[:]只给你整个数组,比如M. 然后[0]给你第一行。

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