добавление и форматирование многомерных массивов в python Numpy

#python #arrays #function #numpy #multidimensional-array

#python #массивы #функция #numpy #многомерный массив

Вопрос:

Я хочу написать код, который добавляет значение к order многомерному массиву. Если последний столбец имеет 0 порядок indx[-1:,1] (function for the last element in the first column) , он будет добавлен 10000 ко второму столбцу, а также 1 к первому столбцу (1, 10000). Если последний элемент первого столбца 1 равен than, он будет добавлен 2 в первый столбец и 20000 во второй столбец (2, 20000). Как я мог бы написать такой код без использования цикла for или понимания списка.

 import numpy as np

order = np.array([[     0,  38846],
                  [     1,  51599],
                  [     0,  51599],
                  [     1,  52598],
                  [     0, 290480],
                  [     1, 335368],
                  [     0, 335916]])

 

Ожидаемый результат

 #if the last element on column 1 is 1
[[     0,  38846]
 [     1,  51599]
 [     0,  51599]
 [     1,  52598]
 [     0, 290480]
 [     1, 335368]
 [     0, 335916]
 [     2,  20000]]
#if the last element on column 1 is 0
[[     0  38846]
 [     1  51599]
 [     0  51599]
 [     1  52598]
 [     0 290480]
 [     1 335368]
 [     0 335916]
 [     1  10000]]

 

Комментарии:

1. Напишите необходимый код с помощью списков или того, что вы знаете лучше всего, и мы предложим улучшения. Сначала заставьте что-нибудь работать, а потом побеспокоитесь о быстром.

2. Вы можете использовать np.vstack для добавления нужной строки.

Ответ №1:

 def extend(order):
    if order[-1, 0] == 0:
        return np.concatenate([order, np.array([[1, 10000]])], axis=0)
    elif order [-1, 0] == 1:
        return np.concatenate([order, np.array([[2, 20000]])], axis=0)