Вопрос расчета по столбцам в ndarray - PullRequest
0 голосов
/ 30 сентября 2019

Мне нужно выполнить вычисление для 1-го столбца 2d-массива и создать другой массив со столбцами первого массива, где второй столбец больше, чем вычисленное значение, используя столбец 1. Форма массива (50,2)

Итак, формула такая:

0,4 * Столбец1 - 0,8

, и мне нужно заполнить новый массив обоими столбцами, где столбец 2 больше расчетного значениявыше

также задаюсь вопросом, есть ли лучшее, что сформулировать операторы if, чтобы я мог сделать это в одном утверждении вместо 2.

Я пробовал несколько вещей. Сейчас у меня нет расчетов, мне просто нужно знать, как заполнить новый массив

, вот что у меня есть:

win =  (.4 *cne_arr[:,0] -.8)
    if (ce_in[:,1]  > win[0:,]).any():
        winrarray[:,1] = ce_in[:,1] 
        if (ce_in[:,1]  > win[0:,]).any():
            winrarray[0:,] =  win[0:,]

bu, конечно, это не работает. Это дает мне ошибку

, с этим я получаю следующее сообщение об ошибке: ValueError: не удалось передать входной массив из shape (50) в shape (50,2)

1 Ответ

0 голосов
/ 30 сентября 2019

Попробуйте это

tmp = # the array with shape (50, 2)
col_1 = 0.4 * tmp[:, 0] - 0.8
col_2 = tmp[:, 1]

mask = np.arange(len(col_2))[col_2 > col_1]
col_2[mask] = col_1[mask]

result = np.vstack([col_1, col_2]).T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...