Ala*_*din 145 python syntax numpy
这是一个简单的问题,但我说我有一个MxN矩阵.我想要做的就是提取特定的列并将它们存储在另一个numpy数组中,但是我得到了无效的语法错误.这是代码:
extractedData = data[[:,1],[:,9]].
Run Code Online (Sandbox Code Playgroud)
似乎上面的行应该足够了,但我猜不是.我环顾四周,但在这个具体情况下找不到任何语法方面的明智之处.
Fre*_*Foo 242
我假设你想要列1
和9
?那是
data[:, [1, 9]]
Run Code Online (Sandbox Code Playgroud)
或者用名字:
data[:, ['Column Name1','Column Name2']]
Run Code Online (Sandbox Code Playgroud)
你可以从data.dtype.names
... 获取名称
Mic*_*ber 26
假设您想要使用该代码段获取第1列和第9列,它应该是:
extractedData = data[:,[1,9]]
Run Code Online (Sandbox Code Playgroud)
que*_*ise 11
如果你只想提取一些列:
idx_IN_columns = [1, 9]
extractedData = data[:,idx_IN_columns]
Run Code Online (Sandbox Code Playgroud)
如果要排除特定列:
idx_OUT_columns = [1, 9]
idx_IN_columns = [i for i in xrange(np.shape(data)[1]) if i not in idx_OUT_columns]
extractedData = data[:,idx_IN_columns]
Run Code Online (Sandbox Code Playgroud)
Dak*_*ksh 11
我想指出的一件事是,如果您要提取的列数为 1,则生成的矩阵将不是您所期望的 Mx1 矩阵,而是包含您提取的列元素的数组。
要将其转换为矩阵,应在结果数组上使用reshape(M,1)方法。
yan*_*nhh 11
只是:
>>> m = np.matrix(np.random.random((5, 5)))
>>> m
matrix([[0.91074101, 0.65999332, 0.69774588, 0.007355 , 0.33025395],
[0.11078742, 0.67463754, 0.43158254, 0.95367876, 0.85926405],
[0.98665185, 0.86431513, 0.12153138, 0.73006437, 0.13404811],
[0.24602225, 0.66139215, 0.08400288, 0.56769924, 0.47974697],
[0.25345299, 0.76385882, 0.11002419, 0.2509888 , 0.06312359]])
>>> m[:,[1, 2]]
matrix([[0.65999332, 0.69774588],
[0.67463754, 0.43158254],
[0.86431513, 0.12153138],
[0.66139215, 0.08400288],
[0.76385882, 0.11002419]])
Run Code Online (Sandbox Code Playgroud)
列不需要按顺序排列:
>>> m[:,[2, 1, 3]]
matrix([[0.69774588, 0.65999332, 0.007355 ],
[0.43158254, 0.67463754, 0.95367876],
[0.12153138, 0.86431513, 0.73006437],
[0.08400288, 0.66139215, 0.56769924],
[0.11002419, 0.76385882, 0.2509888 ]])
Run Code Online (Sandbox Code Playgroud)