Python 如何访问结构化数组子数组中的特定项
使用给出的示例: 如何仅访问“等级”数组中位置0处的等级 因为我对如何获取某个特定人的分数含糊不清,也就是说,因为我可以Python 如何访问结构化数组子数组中的特定项,python,numpy,structured-array,Python,Numpy,Structured Array,使用给出的示例: 如何仅访问“等级”数组中位置0处的等级 因为我对如何获取某个特定人的分数含糊不清,也就是说,因为我可以 >>> x['grades'][0] >>> [8.0 7.0] 或 这两种方法都会得到相同的结果,我不知道如何才能只获得0级的成绩,但对所有人来说都是如此。有办法吗 我不会写字 >>> x[0]['grades'][0] >>> 8.0 或者像这样的组合 >>> x[:]['gra
>>> x['grades'][0]
>>> [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']
)生成二维数组。实际上,它生成了一个1d数组,其中包含grade
的值,但是grade
的每个值本身就是一个1d数组。净结果,二维数组:
[[8.7]
[6.7.]
[:,0]
回答得很好,非常感谢!你对我的后续问题也有什么解释吗?@mapf:不客气。恐怕,我也被为什么
(2)
,[2,]
,[2]
和2
,都会产生与(2,)
相同的结果所困扰。但是,如果严格遵循1d形状的(n,)
符号,您可以确保不会受到任何伤害。形状通常被认为是用元组来表示的,是有一个或多个逗号构成元组,而不是有括号。顺便说一句,你在文章中提到的文档页面也有一个例子,它们通过指定4
而不是(4,)
来创建1d子数组。因此,无论是谁编写了该页面,都可能意识到这种灵活性。正如我所说,坚持1d形状的(n,)
符号总是安全的。我明白了,非常感谢您的洞察力。我不知道(n,)符号,也不知道用逗号表示。非常有趣!这也有助于回忆起,给定的任何表达式(如x+y
)将表达式括在括号中,如(x+y)
,只在强制运算符优先级方面有用(您希望先执行+
)。括号不会生成元组。如果你想让它成为一个只有一个值的元组,你可以使用((x+y),)
,或者,只要去掉外圆括号不会导致语法歧义,你也可以使用(x+y),
(带逗号,但没有外圆括号)。形状
是一个元组。1元素元组的正确显示是(2,)
(2)
只是数字2,()
是一个分组工具,在不需要时被忽略<代码>[2]是一个1元素列表。通常2
,[2]
和(2,)
工作原理相同,但有时数字、列表和元组之间的区别很明显。我明白了,谢谢!我会坚持正确的显示。
print(x['grades'][:,0])
[8. 6.]