Как найти значение в многомерном массиве на основе индекса - PullRequest
1 голос
/ 04 апреля 2019

У меня есть два многомерных массива одинакового размера.Для простоты я сделал их со случайными значениями, но они коррелированы.Из 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 голосов
/ 04 апреля 2019

Если я вас правильно понял, вы хотите соответствующее значение 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.
0 голосов
/ 04 апреля 2019

Ваш код близок!Просто нужно немного настроить.

Получить индекс максимального значения массива X

index[i] = X_splitted[i].argmax()

Получить тот же индекс из массива Y

y_val[i] = Y_splitted[i][index[i]]
...