如何基于索引在多维数组中查找值

时间:2019-04-04 09:11:16

标签: python multidimensional-array indexing

我有两个相同大小的多维数组。为简单起见,我现在将它们设置为随机值,但它们是相互关联的。从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数组的值与这些索引匹配。

2 个答案:

答案 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.