如何使用 dtype=object 访问数组中的项目

Posted

技术标签:

【中文标题】如何使用 dtype=object 访问数组中的项目【英文标题】:How to access items from ndarray with dtype=object 【发布时间】:2022-01-21 09:06:34 【问题描述】:

如何使用 dtype=object 访问 numpy 数组中的数据?

b = numpy.array("a":[1,2,3], dtype=object)

以下引发IndexError

print(b["a"]) 
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

【问题讨论】:

【参考方案1】:

由于您将 dict 传递给 numpy.array() 而不将其放入列表中,因此这是一个零维数组。要索引到一个零维数组,您可以使用b.item() 来访问里面的元素。为了完整起见,要访问字典中 "a" 键中的数据,可以使用它。

>>> b.item()["a"]
[1, 2, 3]

【讨论】:

谢谢!我查找了numpy.org/doc/stable/reference/arrays.ndarray.html,但没有意识到 item() 方法可以让我访问 0-dim 数组。无法使用方括号或点符号访问它。 @AnkitSharma 我相信你也可以通过像b[()]["a"]这样的0元组切片来索引0-dim数组

以上是关于如何使用 dtype=object 访问数组中的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何访问字典数组并使用Objective C中的字典对象?

为啥 object dtype 数组包含 datetime.datetime 对象而不是 numpy.datetime64 对象?

如何解决 KeyError:u“[Index([..], dtype='object')] 中没有 [列]”

python中的numpy常用方法

如何转换numpy子数组的dtype?

将numpy对象数组转换为稀疏矩阵