如何在一维NumPy数组中插入一列?

问题描述 投票:0回答:2

我有一个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: Axis 1 is out of bounds for array of dimension 1.

我找不到自己哪里做错了。请帮我纠正这个问题,并提出其他方法。

numpy numpy-ndarray
2个回答
1
投票

np.insert(A,...)。 只插入一个值,你需要叠加第二列,你可以使用 np.column_stacknp.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
投票

column_stackarray 别人建议的都可以,但要坚持使用。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 是只有1d。


0
投票

也许这就是你想要的。

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.]]
© www.soinside.com 2019 - 2024. All rights reserved.