我有一个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.
我找不到自己哪里做错了。请帮我纠正这个问题,并提出其他方法。
np.insert(A,...)。 只插入一个值,你需要叠加第二列,你可以使用 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.]])
该 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
是只有1d。
也许这就是你想要的。
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.]]