在numpy数组

时间:2016-10-19 18:37:42

标签: python arrays numpy

我有阵列

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)

但它没有做任何改变,不知道该怎么做?

3 个答案:

答案 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执行相同操作,将新值加入主值。 hstackappend等使用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])