如果您不知道ndarray的形状,是否有一种简单的方法可以取出ndarray的第一项?
例如。给定以下数组:
arr = np.array([[[1,2,3,4], [5,6,7,8], [9,10,11,12]]])
>>> [[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]]
我1
不假设我知道此数组的形状是1 * 3 * 4。
我也对最小化解决方案的内存和cpu需求感兴趣。
您可以使用.ravel()
来获取ndarray的平面视图,然后连锁用它[0]
来提取的第一要素,像这样-
arr.ravel()[0]
请注意,这.flatten()
会创建一个副本,因此就内存而言,即使它仍然可以为您提供正确的结果,也不是一个好主意。
检查操作是否正在创建copy
或的一种方法view
是通过检查的内存共享标志np.may_share_memory
,例如-
In [15]: np.may_share_memory(arr.flatten(),arr)
Out[15]: False # Not sharing memory means a copy
In [16]: np.may_share_memory(arr.ravel(),arr)
Out[16]: True # Sharing memory means a view
看来,也可以.flat
用来获取视图。
似乎在np.take
-
np.take(arr,0) # Input array is arr, 0 is the index position
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句