#python #numpy #pseudocode #argmax
Вопрос:
Используя Python, рассмотрим массив X
, содержащий 2d-данные:
X = np.array([x0,y0], ..., [xn,yn])
и три массива 1d Y_A, Y_B, Y_C
той же длины, X
что и содержащие числа. Наконец, рассмотрим 3 пустых массива A,B,C
. Как я могу заполнить эти пустые массивы A,B,C
в соответствии со следующим псевдокодом?
Псевдокод:
for each i in range(X): if Y_A[i] gt; Y_B[i] and Y_A[i] gt; Y_C[i] store X[i] to array A else if Y_B[i] gt; Y_A[i] and Y_B[i] gt; Y_C[i] store X[i] to array B else store X[i] to array C
Мои усилия, которые не работают:
for each i in range(len(X)): if Y_A[i] gt; Y_B[i] and Y_A[i] gt; Y_C[i]: A = Y_A if Y_B[i] gt; Y_A[i] and Y_B[i] gt; Y_C[i]: B = Y_B else: C = Y_C
Ответ №1:
Может быть, попробовать что-то вроде этого:
import numpy as np X = np.random.random((20, 2)) Y_A = np.random.random((20)) Y_B = np.random.random((20)) Y_C = np.random.random((20)) A, B, C = [], [], [] for i in range(X.shape[0]): if Y_A[i] gt; Y_B[i] and Y_A[i] gt; Y_C[i]: A.append(X[i]) elif Y_B[i] gt; Y_A[i] and Y_B[i] gt; Y_C[i]: B.append(X[i]) else: C.append(X[i]) A = np.array(A) B = np.array(B) C = np.array(C)
Вы, конечно, можете также создавать пустые массивы numpy и заполнять их во время цикла, если они имеют ту же длину, X
что и .
Комментарии:
1. Я сделал нечто подобное, см. Мой отредактированный вопрос. Но я не использовал добавление. Так что я попробую сделать это сейчас.
2. Я думаю, что это так. Спасибо.