如何访问结构化数组的子数组中的特定条目
How to access specific entries in sub-array of a structured array
使用给定的示例 here:
dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
如何才能只访问 'grades' 数组中位置 0 的成绩?
由于我无法访问特定人员的成绩,即因为我可以写
>>> x['grades'][0]
>>> [8.0 7.0]
或
>>> x[0]['grades']
>>> [8.0 7.0]
两者都会给出相同的结果,我看不出有什么方法可以只访问位置 0 的成绩,但可以访问所有人。有办法吗?
我不会写
>>> x[0]['grades'][0]
>>> 8.0
或像这样的组合
>>> x[:]['grades'][0]
>>> x[0]['grades'][:]
同上:为什么'grades'字段的形状声明为'(2,)',而'(2)'、'[2,]'、'[2]'和“2”似乎都给出相同的结果?
这将为每个人打印 grades
:
的一年级
print (x[:]['grades'][:,0])
或者:
print(x['grades'][:,0])
输出:
[8. 6.]
解释:
x[:]['grades']
(或x['grades']
)生成一个二维数组。实际上,它生成了 grade
值的一维数组,但是 grade
的每个值本身都是一维数组。最终结果,一个二维数组:
[[8. 7.]
[6. 7.]]
从这个二维数组中,我们只想获得所有年级的每个年级的第一年级,所以我们然后使用索引 [:,0]
使用给定的示例 here:
dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
如何才能只访问 'grades' 数组中位置 0 的成绩?
由于我无法访问特定人员的成绩,即因为我可以写
>>> x['grades'][0]
>>> [8.0 7.0]
或
>>> x[0]['grades']
>>> [8.0 7.0]
两者都会给出相同的结果,我看不出有什么方法可以只访问位置 0 的成绩,但可以访问所有人。有办法吗?
我不会写
>>> x[0]['grades'][0]
>>> 8.0
或像这样的组合
>>> x[:]['grades'][0]
>>> x[0]['grades'][:]
同上:为什么'grades'字段的形状声明为'(2,)',而'(2)'、'[2,]'、'[2]'和“2”似乎都给出相同的结果?
这将为每个人打印 grades
:
print (x[:]['grades'][:,0])
或者:
print(x['grades'][:,0])
输出:
[8. 6.]
解释:
x[:]['grades']
(或x['grades']
)生成一个二维数组。实际上,它生成了grade
值的一维数组,但是grade
的每个值本身都是一维数组。最终结果,一个二维数组:[[8. 7.] [6. 7.]]
从这个二维数组中,我们只想获得所有年级的每个年级的第一年级,所以我们然后使用索引
[:,0]