我遇到了访问多个字段(列)的困难
输入:
a = np.array([(1.0, 2,1),(3.0, 4,2),(9, 3,6)], dtype=[('x', float), ('y', float), ('z', float)])
a=np.reshape(a,(a.shape[0],-1))
a
输出:
array([[(1.0, 2.0, 1.0)],
[(3.0, 4.0, 2.0)],
[(9.0, 3.0, 6.0)]],
dtype=[('x', '<f8'), ('y', '<f8'), ('z', '<f8')])
如果我想访问第一列,我可以做:
in: a[:]['x']
out: array([[ 1.],
[ 3.],
[ 9.]])
但是如果我想首先访问(例如)第三列,正确的语法是什么?像
之类的东西in: a[:]['x':'z']
显然不起作用
import numpy as np
a = np.array([(1.0, 2,1),(3.0, 4,2),(9, 3,6)], dtype=[('x', float), ('y', float), ('z', float)])
print(a)
print(a[['x', 'z']])
您可以对结果数组应用更高级别的索引,以选择仅需要的元素。
a[:][['x', 'z']]
Out[9]:
array([[(1.0, 1.0)],
[(3.0, 2.0)],
[(9.0, 6.0)]],
将列名作为列表传递
a
的列名将转换为列表。之后,您可以按索引或逐项访问列表中的列col_to_ex=list(a.dtype.names)
col_to_ex=col_to_ex[0]+...
或
col_to_ex=list(a.dtype.names).remove('y')
然后您可以做:
a[:][col_to_ex]