【发布时间】:2016-04-03 22:30:05
【问题描述】:
我有一个函数,我想快速访问给定 Numpy 数组的第一个(又名第零个)元素,它本身可能有任意数量的维度。最快的方法是什么?
我目前正在使用以下内容:
a.reshape(-1)[0]
这将可能是多维数组重塑为一维数组,并抓取第零个元素,该元素短、甜且通常快速。但是,我认为这对于某些数组效果不佳,例如,一个大数组的转置视图的数组,因为我担心这最终需要创建一个副本,而不仅仅是原始数组的另一个视图,以便让一切都按正确的顺序排列。 (是这样吗?还是我不必要地担心?)无论如何,感觉这比我真正需要的工作要多,所以我想你们中的一些人可能知道通常更快的方法?
我考虑过的其他选项是在整个数组上创建一个迭代器并从中仅绘制一个元素,或者创建一个零向量,其中每个维度包含一个零,并使用它来对数组进行花式索引。但这些似乎都不是那么好。
【问题讨论】:
-
“或者我是在无谓地担心?”不,你不是在无谓地担心!根据
a的内存布局,a.reshape(-1)可能会导致复制,当您只关心第一个元素时,这肯定是矫枉过正。