我有阵列
x=[ 0.30153836 0.30376881 0.29115761 0.29074261 0.28676876 ]
我想在数组的开头插入-1,就像
一样 x= [-1 0.30153836 0.30376881 0.29115761 0.29074261 0.28676876]
我试过了:
np.insert(x,0,-1,axis=0)
但它没有做任何改变,不知道该怎么做?
答案 0 :(得分:3)
您可以通过省略轴参数来执行插入:
x = np.array([0,0,0,0])
x = np.insert(x, 0, -1)
x
这将给出:
array([-1, 0, 0, 0, 0])
答案 1 :(得分:2)
我对numpy并不完全熟悉,但似乎insert函数不会影响传递给它的数组,而是返回一个带有插入值的新数组。如果你真的想要改变x,你将不得不重新分配给x。
>>> x= [-1, 0.30153836, 0.30376881, 0.29115761, 0.29074261, 0.28676876]
>>> np.insert(x,0,-1,axis=0)
array([-1. , -1. , 0.30153836, 0.30376881, 0.29115761,
0.29074261, 0.28676876])
>>> x
[-1, 0.30153836, 0.30376881, 0.29115761, 0.29074261, 0.28676876]
>>> x = np.insert(x,0,-1,axis=0)
>>> x
array([-1. , -1. , 0.30153836, 0.30376881, 0.29115761,
0.29074261, 0.28676876])
答案 2 :(得分:1)
来自np.insert
文档:
Returns
out : ndarray
A copy of `arr` with `values` inserted. Note that `insert`
does not occur in-place: a new array is returned.
您可以对concatenate
执行相同操作,将新值加入主值。 hstack
,append
等使用concatenate
; insert更通用,允许插入中间(对于任何轴),因此它自己进行索引和创建新数组。
无论如何,关键是它不能就地运作。您无法更改数组的大小。
In [788]: x= np.array([0.30153836, 0.30376881, 0.29115761, 0.29074261, 0.28
...: 676876])
In [789]: y=np.insert(x,0,-1,axis=0)
In [790]: y
Out[790]:
array([-1. , 0.30153836, 0.30376881, 0.29115761, 0.29074261,
0.28676876])
In [791]: x
Out[791]: array([ 0.30153836, 0.30376881, 0.29115761, 0.29074261, 0.28676876])
连接相同的动作;请注意,我必须添加[]
,np.array([-1])
的缩写,因此两个输入都是1d数组。将标量扩展为数组就是insert
所做的一切。
In [793]: np.concatenate([[-1],x])
Out[793]:
array([-1. , 0.30153836, 0.30376881, 0.29115761, 0.29074261,
0.28676876])