import numpy as np
我有一个数组,没有它的内容的任何先验信息。例如:
ourarray = \
np.array([[0,1],
[2,3],
[4,5]])
我想获得可用于索引ourarray
的数字对。我想得到:
array([[0, 0, 1, 1, 2, 2],
[0, 1, 0, 1, 0, 1]])
(0,0
、0,1
、1,0
等,ourarray
的所有可能索引都在该数组中。)
how to find indices of a 2d numpy array occuring in another 2d array:在这里,它们在另一个数组中搜索一个数组,而不是返回整个数组的索引
Find indices of rows of numpy 2d array in another 2D array:他们首先要处理两个数组,目标不是基于包含索引的第一个数组创建第二个数组
我可以通过以下方式获得此阵列:
np.array(np.where(np.ones(ourarray.shape)))
这给出了期望的结果,但它需要creting{
我还尝试:
np.array(np.where(ourarray))
这不起作用,因为没有为ourarray
的0
项返回索引
尝试1有效,但我正在寻找一种更有效的方法。如何才能更有效地完成此任务?
您可以使用^{} ,然后使用
.T
获得您想要的试试这个:
如果数组中可能存在任何值,则可以使用以下方法:
您打算如何使用此索引
由
nonzero
(where
)生成的元组是为方便索引而设计的:或等效地显式使用2个数组:
您的
np.array(idx)
可以像[57]中那样使用,但不能像[56]中那样使用。在[56]中使用tuple
是很重要的如果我们将
transpose
应用于此,我们将得到一个数组要将其用于索引,我们必须迭代:
另一个答案中提出的{}只是转置。使用
outarray>=0
实际上与np.ones
表达式没有什么不同。两者都构成一个数组,该数组对所有元素都是True/1
还有其他生成索引的方法,
np.indices
,np.meshgrid
,np.mgrid
,np.ndindex
,但它们需要某种形式的重新塑造和/或转置,才能得到您想要的:时间安排
如果
ourarray>=0
起作用,它比np.ones
快:np.where/nonzero
增加了一个不平凡的时间:还有一点时间将元组转换为数组:
argwhere
的transpose
往返增加了更多的时间:indices
与[82]大致相同,但其规模可能不同相关问题 更多 >
编程相关推荐