我有两个相同大小的多维数组。为简单起见,我现在将它们设置为随机值,但它们是相互关联的。从X数组中,我需要找到每行的最大值。从Y数组中,我需要带有相应索引的值作为X数组中的最大值。
import numpy as np
X_splitted = np.random.random_sample([517,56])
Y_splitted = np.random.random_sample([517,56])
rows = len(Y_splitted[0])
colums = len(Y_splitted)
X_max = np.zeros(colums)
index = np.zeros(colums)
Y_corr = np.zeros(colums)
for i in range(colums):
X_max[i] = max(X_splitted[i])
index[i] = (np.asarray(X_splitted[i].argmax()))
index = index.astype(int)
我设法找到了X数组的最大值及其对应的索引。但是,我无法将Y数组的值与这些索引匹配。
答案 0 :(得分:0)
您的代码已接近!只需进行一些调整即可。
获取X数组最大值的索引
index[i] = X_splitted[i].argmax()
从Y数组中获取相同的索引
y_val[i] = Y_splitted[i][index[i]]
答案 1 :(得分:0)
如果我理解您的要求是正确的,那么您希望将Y值对应到X_max值。然后,请参见下面的带有内联注释的代码。
...snippet...
for i in range(colums):
# print (i)
X_max[i] = max(X_splitted[i])
X_max_val = X_max[i] # this is local X_max value
j = np.where(X_splitted[i]==X_max_val) # find local X_max value position in X_splitted[i]
Y_value = float(Y_splitted[i][j]) # the corresponding Y-value for X_max value.
Y_corr[i] = Y_value # store corresponding y value in own array.
xy = (X_max_val, Y_value)
Result.append(xy) # joint values in a list.