使用numpy.insert追加numpy数组

使用numpy.insert追加numpy数组,numpy,insert,Numpy,Insert,我有一个形状为(30,1)的numpy数组(输入)。我想插入第31个值(例如,x=2)。试图使用np.insert函数,但它给了我越界错误 索引器:索引31超出大小为30的轴0的界限 简短回答:您需要将其插入索引b,而不是b+1 传递给的索引是应该添加元素的索引。如果将其插入索引30,则它将位于最后一个位置。请注意,索引是基于零的。因此,如果有一个包含30个元素的数组,那么最后一个索引是29。如果您这样将其插入索引30,我们得到: >>> a array([ 0, 1, 2

我有一个形状为(30,1)的numpy数组(输入)。我想插入第31个值(例如,
x=2
)。试图使用np.insert函数,但它给了我越界错误

索引器:索引31超出大小为30的轴0的界限


简短回答:您需要将其插入索引
b
,而不是
b+1

传递给的索引是应该添加元素的索引。如果将其插入索引
30
,则它将位于最后一个位置。请注意,索引是基于零的。因此,如果有一个包含30个元素的数组,那么最后一个索引是
29
。如果您这样将其插入索引
30
,我们得到:

>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])
>>> np.insert(a,30,42)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42])

简短回答:您需要将其插入索引
b
,而不是
b+1

传递给的索引是应该添加元素的索引。如果将其插入索引
30
,则它将位于最后一个位置。请注意,索引是基于零的。因此,如果有一个包含30个元素的数组,那么最后一个索引是
29
。如果您这样将其插入索引
30
,我们得到:

>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])
>>> np.insert(a,30,42)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 42])

谢谢,错误消失了,但是当我打印数组输入时,它没有显示附加值,只显示30个值。缺少第31个值。numpy数组先前使用整形(-1,1)@Atul进行了整形:它不修改数组,而是构造一个新数组。因此,经常执行此类插入通常不是一个好主意,因为每次都要创建一个新对象。那么,向大小为(30,1)的数组添加值的正确方法是什么?是用append吗?您能提供语法吗。@Atul:通常没有人不做太多的“附加”等操作。您使用的是列表,例如在numpy数组中加载的列表。Numpy不是要对单个元素进行计算,而是要“批量”进行计算。对于少量元素,numpy将比普通Python慢。因此,Numpy意味着要处理大量数据。在这种情况下,如果我可以去掉索引0处的第一个值,并在末尾添加新值,从而保持大小不变,那么错误就消失了,但是当我打印数组输入时,它不显示附加值,只显示30个值。缺少第31个值。numpy数组先前使用整形(-1,1)@Atul进行了整形:它不修改数组,而是构造一个新数组。因此,经常执行此类插入通常不是一个好主意,因为每次都要创建一个新对象。那么,向大小为(30,1)的数组添加值的正确方法是什么?是用append吗?您能提供语法吗。@Atul:通常没有人不做太多的“附加”等操作。您使用的是列表,例如在numpy数组中加载的列表。Numpy不是要对单个元素进行计算,而是要“批量”进行计算。对于少量元素,numpy将比普通Python慢。因此,Numpy意味着要处理大量的数据。在这种情况下,如果我可以去掉索引0中的第一个值,并在末尾添加新值,从而保持大小,也会有所帮助