如何访问结构化数组子数组中的特定项

2024-10-16 20:45:51 发布

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

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”似乎给出相同的结果


Tags: nameherenpdtunicode数组johnarray
1条回答
网友
1楼 · 发布于 2024-10-16 20:45:51

这将为每个人打印grades的一年级:

print (x[:]['grades'][:,0])

或者:

print(x['grades'][:,0])

输出:

[8. 6.]

说明:

  1. x[:]['grades'](或x['grades'])生成二维数组。实际上,它产生了一个由grade值组成的一维数组,但是grade的每个值本身就是一个一维数组。最终结果,二维数组:

    [[8. 7.] [6. 7.]]

  2. 从这个2d数组中,我们只想从每个等级中得到所有等级的第一个等级,因此我们使用索引[:,0]

相关问题 更多 >