如何从numpy.array?

2024-04-26 04:48:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

输入:

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

输出:

^{pr2}$

如果我想访问第一列,我可以:

in: a[:]['x']

out: array([[ 1.], [ 3.], [ 9.]])

但是,如果我想先访问(例如)第三列,正确的语法是什么? 有点像

in: a[:]['x':'z']

显然行不通


Tags: innp语法floatoutarrayshapedtype
3条回答

考虑有很多列,而不希望手动添加所有项 -您可以: a的列名将转换为列表。 然后,您可以按索引或逐项的方式访问列

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

或者

^{pr2}$

然后你可以:

a[:][col_to_ex]

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

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)]], 

将列名作为列表传递

相关问题 更多 >