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)
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)
3条答案
按热度按时间a11xaf1n1#
通常使用
np.argwhere(e == 2)
:如果您确实需要指定的输出,则必须添加额外的
[0]
但是,您提供的输入不是标准的数字数组,而是
object
数组,因为len(e[0]) != len(e[1])
:这使得numpy的用处和效率大大降低。你将不得不采取类似的措施:
假设这是一个错别字,如果你对最接近2的值感兴趣,即使2不存在,你必须这样做:
这里我选择2.2作为示例值。
ctehm74n2#
这可以通过定义一个在1D数组上工作的函数并将其应用于2D数组的行来完成:
dluptydi3#
虽然这是一个老问题,但对于“矩形”数组,就像其他答案一样,它是一行程序