In [100]: x
Out[100]:
array([[1, 2, 3],
[4, 5, 6]])
In [101]: x.ravel('F')[3]
Out[101]: 5
这将在选择元素之前创建整个数组的副本-
In [161]: np.may_share_memory(x, x.ravel())
Out[161]: True
In [162]: np.may_share_memory(x, x.ravel('F'))
Out[162]: False
因此,这可能不是内存效率最高的一个。为了更好的方法,让我们换一种方法。你知道吗
进近#2
我们可以从列主有序索引中得到行和列索引,然后简单地用它索引到数组中-
x[np.unravel_index(3, np.array(x.shape)[::-1])]
样本运行-
In [147]: x
Out[147]:
array([[1, 2, 3],
[4, 5, 6]])
In [148]: idx = np.unravel_index(3, np.array(x.shape)[::-1])
In [149]: idx
Out[149]: (1, 1) # row, col indices obtained in C order
In [150]: x[idx]
Out[150]: 5
进近#1
您可以使用
.ravel('F')
来获得列的主要顺序,然后索引-样本运行-
这将在选择元素之前创建整个数组的副本-
因此,这可能不是内存效率最高的一个。为了更好的方法,让我们换一种方法。你知道吗
进近#2
我们可以从列主有序索引中得到行和列索引,然后简单地用它索引到数组中-
样本运行-
这里没有任何复制、展平或散乱,只使用索引,因此在内存和性能方面都应该是有效的。你知道吗
不确定这是不是最好的方法,但似乎很简单
会给出我想要的结果。尽管我希望有一些合适的方法,我可以用
order='F'
来指定,这将更容易理解。你知道吗相关问题 更多 >
编程相关推荐