Как вставить столбец в одномерный массив NumPy - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть массив NumPy

import numpy as np
A = np.array([2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

Я хочу вставить новый столбец в A, чтобы он выглядел как

A=[[1,2], [1,3], [1,4], [1,5], [1,6], [1,7], [1,8], [1,9], [1,10], [1,11]]

Я пытался использовать NumPy.insert(A,0,1,axis=1) но выдает следующую ошибку:

AxisError: ось 1 выходит за границы массива измерения 1

Я не могу найти, где я делаю неправильно. Пожалуйста, помогите мне исправить это и предложить любые другие методы.

Ответы [ 3 ]

1 голос
/ 23 апреля 2020

np.insert вставьте только одно значение, вам нужно сложить второй столбец. Вы можете использовать np.column_stack или np.c_

import numpy as np

A=np.array([2,3,4,5,6,7,8,9,10,11])
arr1 = np.ones(len(A))
out = np.c_[arr1,A]
array([[ 1.,  2.],
       [ 1.,  3.],
       [ 1.,  4.],
       [ 1.,  5.],
       [ 1.,  6.],
       [ 1.,  7.],
       [ 1.,  8.],
       [ 1.,  9.],
       [ 1., 10.],
       [ 1., 11.]])
np.column_stack((arr1,A))
array([[ 1.,  2.],
       [ 1.,  3.],
       [ 1.,  4.],
       [ 1.,  5.],
       [ 1.,  6.],
       [ 1.,  7.],
       [ 1.,  8.],
       [ 1.,  9.],
       [ 1., 10.],
       [ 1., 11.]])
1 голос
/ 23 апреля 2020

column_stack или array, которые предлагают другие, это хорошо, но придерживаться insert:

In [126]: A = np.array([2, 3, 4, 5, 6, 7, 8, 9, 10, 11])                                               
In [127]: A.shape                                                                                      
Out[127]: (10,)
In [128]: A[:,None].shape                                                                              
Out[128]: (10, 1)
In [129]: np.insert(A[:,None],0,1, axis=1)                                                             
Out[129]: 
array([[ 1,  2],
       [ 1,  3],
       [ 1,  4],
       [ 1,  5],
       [ 1,  6],
       [ 1,  7],
       [ 1,  8],
       [ 1,  9],
       [ 1, 10],
       [ 1, 11]])

Чтобы сделать вставку по оси 1, A должен иметь такой ось, т.е. должна быть 2d. Вот о чем было ваше сообщение об ошибке. A только 1д.

0 голосов
/ 23 апреля 2020

Возможно, это то, что вы хотите:

a = np.array([1,2,3,4,5,6,7,8,9,10,11])
b = np.ones(a.shape[0])
c = np.array((b,a)).T

Вывод:

[[ 1.  1.]
 [ 1.  2.]
 [ 1.  3.]
 [ 1.  4.]
 [ 1.  5.]
 [ 1.  6.]
 [ 1.  7.]
 [ 1.  8.]
 [ 1.  9.]
 [ 1. 10.]
 [ 1. 11.]]
...