快速访问任意维数Numpy数组中第一个元素的方法?

2024-06-09 18:56:29 发布

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

我有一个函数,我想快速访问给定Numpy数组的第一个(也称为第零个)元素,它本身可能有任意数量的维度。最快的方法是什么?

我目前正在使用以下工具:

a.reshape(-1)[0]

这将可能是多维数组重塑为一维数组,并抓住第0个元素,这是短,甜,往往快。但是,我认为这对于一些数组来说会很糟糕,例如,一个数组是一个大数组的转置视图,因为我担心这最终需要创建一个副本,而不仅仅是原始数组的另一个视图,以便使所有东西都处于正确的顺序。(对吗?还是我在不必要地担心?)不管怎样,感觉这比我真正需要的工作要多,所以我想你们中的一些人可能知道一种通常更快的方法来做这件事?

我考虑过的其他选项是在整个数组上创建一个迭代器,并从中仅绘制一个元素,或者创建一个包含每个维度一个零的零向量,并使用该向量在数组中创建索引。但这两个也没那么好。


Tags: 工具方法函数numpy视图元素数量顺序
3条回答

您可以使用a.item(0);请参阅^{}上的文档。

这种方法的一个可能的缺点是返回值是一个Python数据类型,而不是一个numpy对象。例如,如果a具有数据类型numpy.uint8,则a.item(0)将是Python整数。如果这是个问题,a.flat[0]更好——请参阅@user2357112的答案。

a.flat[0]

这应该很快,不需要拷贝。(注意a.flat^{}的实例,而不是数组。)

## y -- numpy array of shape (1, Ty)

如果要获取第一个元素:

使用y.shape[0]

如果要获取第二个元素:

使用y.shape[1]

资料来源: https://docs.scipy.org/doc/numpy/reference/generated/numpy.take.html

您还可以使用take进行更复杂的提取(以获取少量元素):

numpy.take(a, indices, axis=None, out=None, mode='raise')[source] Take elements from an array along an axis.

相关问题 更多 >