Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何访问结构化数组子数组中的特定项_Python_Numpy_Structured Array - Fatal编程技术网

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

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

使用给出的示例:

如何仅访问“等级”数组中位置0处的等级

因为我对如何获取某个特定人的分数含糊不清,也就是说,因为我可以

>>> 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.]

  • 从这个2d数组中,我们只想从所有等级的每个等级中获得第一个等级,因此我们使用索引
    [:,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.]