我定义了一个函数,用于搜索给定二维数组 (main_array
) 最小值的列和行索引。在这种情况下,main_array
的最小值为 1.1
,因此索引应为 [0,2]
。然后我必须使用列索引值 0
输入到另一个给定的一维数组 A_array
,类似地将行索引值 2
输入另一个给定的一维数组 B_array
,即我正在努力解决的部分。
以下是我目前的代码:
import numpy as np
main_array = np.array([[3.1, 2.1, 1.1],
[4.1, 1.6, 2.4],
[2.2, 3.2, 3.6],
[1.5, 2.5, 3.5]])
A_array = np.array([3.7, 4.7, 5.7, 6.7])
B_array = np.array([1.5, 1.8, 2.1])
def min_picks(main_array,A_array,B_array):
min_index = np.argwhere(main_array == np.min(main_array)) #this gives [[0 2]]
A_pick = A_array[min_index[0]]
B_pick = B_array[min_index[-1]]
return A_pick, B_pick
该函数应返回分配给 A_array[0]
的 A_pick
的预期答案,以及分配给 B_array[2]
的 B_pick
。
答案 0 :(得分:0)
您的数组索引不正确。请尝试以下操作:
main_array = np.array([[3.1, 2.1, 1.1],
[4.1, 1.6, 2.4],
[2.2, 3.2, 3.6],
[1.5, 2.5, 3.5]])
A_array = np.array([3.7, 4.7, 5.7, 6.7])
B_array = np.array([1.5, 1.8, 2.1])
def min_picks(main_array,A_array,B_array):
min_index = np.argwhere(main_array == np.min(main_array)) #this gives [[0 2]]
A_pick = A_array[min_index[:,0]][0]
B_pick = B_array[min_index[:,1]][0]
return A_pick, B_pick
>>> min_picks(main_array,A_array,B_array)
#(3.7, 2.1)
答案 1 :(得分:0)
您可以使用 reduce
将 min_index
展平,然后从展平列表中轻松访问您需要的内容。
from functools import reduce
def min_picks(main_array,A_array,B_array):
min_index = reduce(lambda z, y :z + y, np.argwhere(main_array == np.min(main_array)))
A_pick = A_array[min_index[0]]
B_pick = B_array[min_index[1]]
return A_pick, B_pick
print(min_picks(main_array, A_array, B_array))
这会给你:
(3.7, 2.1)