#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)