e = np.array([[1,2,3], [4,5,6]])
# function to find position of nearest value in 1D array
def find_nearest(a, val):
return np.abs(a - val).argmin()
# apply it
np.apply_along_axis(find_nearest, axis = 1, arr = e, val = 2)
In [1]: e = np.array([[1,2],[4,5,6]])
In [3]: e
Out[3]: array([list([1, 2]), list([4, 5, 6])], dtype=object)
这使得numpy的实用性和效率大大降低。你必须采取以下措施:
In [26]: res = []
...: for i, f in enumerate(e):
...: g = np.array(f)
...: w = np.argwhere(g==2)
...: if len(w):
...: res += [(i, v) for v in w]
...: res = np.array(res)
假设这是一个错误,如果您对最接近2的值感兴趣,即使2不存在,您也必须执行以下操作:
In [35]: np.unravel_index((np.abs(e - 2.2)).argmin(), e.shape)
Out[35]: (0, 1)
这可以通过定义一个作用于一维数组的函数并将其应用于二维数组的行来实现:
通常您会使用
np.argwhere(e == 2)
:如果您确实需要指定的输出,您必须添加一个额外的
^{pr2}$[0]
但是,您提供的输入不是标准数字数组,而是
object
数组,因为len(e[0]) != len(e[1])
:这使得numpy的实用性和效率大大降低。你必须采取以下措施:
假设这是一个错误,如果您对最接近2的值感兴趣,即使2不存在,您也必须执行以下操作:
这里我选择2.2作为示例值。在
使用^{} 可以找到最接近要搜索的元素的索引。这将输出展平向量tough的索引,但您可以使用一些基本数学找到2D:
相关问题 更多 >
编程相关推荐