1

使用此处给出的示例:

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)

如何仅访问“成绩”数组中位置 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'似乎都是给出相同的结果?

4

1 回答 1

3

这将为每个人打印一年级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]

于 2019-02-27T15:31:52.700 回答