首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python,numpy;如何在数组的开头插入元素

python,numpy;如何在数组的开头插入元素
EN

Stack Overflow用户
提问于 2013-11-21 00:15:11
回答 5查看 47.3K关注 0票数 24

我有一个复数的numpy数组。所以我想在数组的开始处插入零,并将数组的其余部分前移一位。

示例:

代码语言:javascript
复制
a = [1 + 2j, 5 + 7j,..]

我想做的是:

代码语言:javascript
复制
a = [0 + 0j, 1 + 2j, 5 + 7j,..]

做这件事最简单的方法是什么?

EN

回答 5

Stack Overflow用户

发布于 2013-11-21 00:18:12

最简单的方法:

代码语言:javascript
复制
a = np.array([1 + 2j, 5 + 7j])
a = np.insert(a, 0, 0)

然后:

代码语言:javascript
复制
>>> a
array([ 0.+0.j,  1.+2.j,  5.+7.j])

请注意,这将创建一个新数组,它实际上不会将0插入到原始数组中。

np.insert有几种替代方法,所有这些方法都会创建一个新的数组:

代码语言:javascript
复制
In [377]: a
Out[377]: array([ 1.+2.j,  5.+7.j])

In [378]: np.r_[0, a]
Out[378]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [379]: np.append(0, a)
Out[379]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [380]: np.concatenate([[0], a])
Out[380]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [381]: np.hstack([0, a])
Out[381]: array([ 0.+0.j,  1.+2.j,  5.+7.j])

In [382]: np.insert(a, 0, 0)
Out[382]: array([ 0.+0.j,  1.+2.j,  5.+7.j])
票数 32
EN

Stack Overflow用户

发布于 2013-11-21 00:26:08

另一种选择是“水平堆栈”(也会创建一个新数组):

代码语言:javascript
复制
np.hstack((0,a))
票数 12
EN

Stack Overflow用户

发布于 2016-06-09 18:46:34

此外,如果您有一个n维数组,您还需要指定轴,否则它会变平:

代码语言:javascript
复制
 np.insert(my_array, 0, myvalue, axis=1)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20101093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档