我有一个大数组,大约包含4900万个项目(7000*7000),需要在其中查找最大的N个项目以及它们的索引,忽略所有NaN。在事先无法删除这些NaN的情况下进行查找,因为我需要从第一个数组中获得最大的N个项目的索引值,以便从另一个数组中提取数据,而该数据与第一个数组中的NaN不同。我尝试了:
np.argpartition(first_array, -N)[-N:]
这对于没有NaN的数组非常有效,但是如果存在NaN,则nan会被认为是最大的项目,因为在Python中被视为无限大。
x = np.array([np.nan, 2, -1, 2, -4, -8, -9, 6, -3]).reshape(3, 3)
y = np.argpartition(x.ravel() , -3)[-3:]
z = x.ravel()[y]
# this is the result I am getting === [2, 6, nan]
# but I need this ==== [2, 2, 6]
np.nanargmax
。 - yatu