Преобразование массива numpy размером 2 в 3

#python #arrays #numpy #append #numpy-ndarray

#python #массивы #numpy #добавить #numpy-ndarray

Вопрос:

предположим, у меня есть каждый массив размером 2

 Arr1 =([[-4, 1],
       [-3,  1],
       [-2,  1],
       [ 2,  1],
       [ 3,  1],
       [ 4,  1]])
  

Как я могу добавить / дописать 3-й элемент к каждому массиву, чтобы получить новый массив / вывод в виде:

 New_Arr1=([[-4,  1, 0],
           [-3,  1, 0],
           [-2,  1, 0],
           [ 2,  1, 0],
           [ 3,  1, 0],
           [ 4,  1, 0]]) ?
  

большое спасибо,
Сэм

Ответ №1:

Чтобы добавить 0 ко всем вложенным спискам, выполните:

 for lst in Arr1:
    lst.append(0)
  

(Обратите внимание, что в вашем выражении для Arr1 внешние скобки не имеют никакого эффекта. То, что у вас есть, — это список списков.)

Обратите внимание, что это изменение на месте Arr1 . Если вы хотите оставить его неизмененным и создать совершенно отдельный новый список списков, то у вас есть это в другом ответе, и я не буду его повторять, кроме упоминания, что синтаксис в ответе Азро предполагает Python 3 (который вы должны использовать), но если по какой-либо причине вы используете Python 2, тогда используйте вместо

 new_Arr1 = [lst   [0] for lst in Arr1]
  

Обновление: я вижу, что вы отметили numpy, так что, возможно, у вас действительно есть массив numpy, хотя вопрос не является явным по этому поводу.

Если это так, вы могли бы создать (новый, отдельный) расширенный массив, выполнив:

 New_Arr1 = np.append(Arr1, np.zeros((Arr1.shape[0], 1), dtype=Arr1.dtype), axis=1)
  

(хотя это, конечно, не исключает, что существует какой-то более простой способ).

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

1. вы поняли, это массив numpy. Это решило запрос. Спасибо, Алани

2. @Sam Вполне возможно, что появится любитель numpy и предложит более простое решение, имейте в виду … часто кажется, что есть много способов сделать что-то в numpy.

Ответ №2:

Вы можете сделать это легко с помощью понимания списка, для каждого массива создайте новые со своими значениями, а также 0

 new_values = [[*val, 0] for val in values]