Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从结构化numpy.array访问多个字段?_Python_Numpy_Field - Fatal编程技术网

Python 如何从结构化numpy.array访问多个字段?

Python 如何从结构化numpy.array访问多个字段?,python,numpy,field,Python,Numpy,Field,我遇到了访问多个字段(列)的困难 输入: 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=[

我遇到了访问多个字段(列)的困难

输入:

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')])
数组([(1.0,2.0,1.0)],
[(3.0, 4.0, 2.0)],
[(9.0, 3.0, 6.0)]], 
数据类型=[('x','

将列名作为列表传递

使用字段名列表作为数组的索引。结果是一个形状相同的数组,但记录中只有选定字段(具有多个字段的数组元素称为记录)


如果您选择,您可以对结果数组应用更高级别的索引,以仅选择所需的元素。

请考虑有很多列,并且您不想手动添加所有项 -你可以做:
a
的列名将转换为列表。 之后,您可以以列表索引方式或项目方式访问这些列

col_to_ex=list(a.dtype.names)
col_to_ex=col_to_ex[0]+...

然后你可以做:

a[:][col_to_ex]

当然。我花了一段时间才意识到你的数组是一维的。但我还是在编辑中添加了该注释,这样答案可能更普遍有用,特别是对初学者。动态提取字段名的好例子。为什么
a[:][col_to_ex]
而不是
a[col_to_ex]
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]