我知道已经回答了这个问题组,但是我正在专门研究numpy和scipy。说我有一个网格
lGrid = linspace(0.1, 8, 50)
我想找到最适合
2
的索引,index = abs(lGrid-2).argmin()
lGrid[index]
2.034
但是,如果我有一个完整的值矩阵而不是
2
。我猜迭代非常慢。 abs(lGrid-[2,4])
但是将由于形状问题而失败。我将需要一个易于扩展到N维矩阵的解决方案。在这种环境下最好的行动方案是什么? 最佳答案
您可以使用广播:
from numpy import arange,linspace,argmin
vals = arange(30).reshape(2,5,3) #your N-dimensional input, like array([2,4])
lGrid = linspace(0.1, 8, 50)
result = argmin(abs(lGrid-vals[...,newaxis]),axis=-1)
例如,使用输入
vals = array([2,4])
,您将获得result = array([12, 24])
和lGrid[result]=array([ 2.03469388, 3.96938776])