我有一个函数,我想快速访问给定Numpy数组的第一个(也称为第零个)元素,它本身可能有任意数量的维度。最快的方法是什么?
我目前正在使用以下工具:
a.reshape(-1)[0]
这将可能是多维数组重塑为一维数组,并抓住第0个元素,这是短,甜,往往快。但是,我认为这对于一些数组来说会很糟糕,例如,一个数组是一个大数组的转置视图,因为我担心这最终需要创建一个副本,而不仅仅是原始数组的另一个视图,以便使所有东西都处于正确的顺序。(对吗?还是我在不必要地担心?)不管怎样,感觉这比我真正需要的工作要多,所以我想你们中的一些人可能知道一种通常更快的方法来做这件事?
我考虑过的其他选项是在整个数组上创建一个迭代器,并从中仅绘制一个元素,或者创建一个包含每个维度一个零的零向量,并使用该向量在数组中创建索引。但这两个也没那么好。
您可以使用} 上的文档。
a.item(0)
;请参阅^{这种方法的一个可能的缺点是返回值是一个Python数据类型,而不是一个numpy对象。例如,如果
a
具有数据类型numpy.uint8
,则a.item(0)
将是Python整数。如果这是个问题,a.flat[0]
更好——请参阅@user2357112的答案。这应该很快,不需要拷贝。(注意} 的实例,而不是数组。)
a.flat
是^{如果要获取第一个元素:
使用
y.shape[0]
如果要获取第二个元素:
使用
y.shape[1]
资料来源: https://docs.scipy.org/doc/numpy/reference/generated/numpy.take.html
您还可以使用take进行更复杂的提取(以获取少量元素):
相关问题 更多 >
编程相关推荐