首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何向NumPy数组添加额外的列

如何向NumPy数组添加额外的列
EN

Stack Overflow用户
提问于 2011-12-13 16:36:11
回答 17查看 641.7K关注 0票数 379

假设我有一个NumPy数组,a

代码语言:javascript
复制
a = np.array([
    [1, 2, 3],
    [2, 3, 4]
    ])

我想添加一列零来得到一个数组,b

代码语言:javascript
复制
b = np.array([
    [1, 2, 3, 0],
    [2, 3, 4, 0]
    ])

如何在NumPy中轻松做到这一点?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2011-12-13 20:47:06

我认为更直接的解决方案和更快的启动是执行以下操作:

代码语言:javascript
复制
import numpy as np
N = 10
a = np.random.rand(N,N)
b = np.zeros((N,N+1))
b[:,:-1] = a

和计时:

代码语言:javascript
复制
In [23]: N = 10

In [24]: a = np.random.rand(N,N)

In [25]: %timeit b = np.hstack((a,np.zeros((a.shape[0],1))))
10000 loops, best of 3: 19.6 us per loop

In [27]: %timeit b = np.zeros((a.shape[0],a.shape[1]+1)); b[:,:-1] = a
100000 loops, best of 3: 5.62 us per loop
票数 218
EN

Stack Overflow用户

发布于 2011-12-14 21:56:43

np.r_[ ... ]np.c_[ ... ]vstackhstack的有用替代品,它们使用方括号[]代替了round ()。

下面是几个例子:

代码语言:javascript
复制
: import numpy as np
: N = 3
: A = np.eye(N)

: np.c_[ A, np.ones(N) ]              # add a column
array([[ 1.,  0.,  0.,  1.],
       [ 0.,  1.,  0.,  1.],
       [ 0.,  0.,  1.,  1.]])

: np.c_[ np.ones(N), A, np.ones(N) ]  # or two
array([[ 1.,  1.,  0.,  0.,  1.],
       [ 1.,  0.,  1.,  0.,  1.],
       [ 1.,  0.,  0.,  1.,  1.]])

: np.r_[ A, [A[1]] ]              # add a row
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  1.,  0.]])
: # not np.r_[ A, A[1] ]

: np.r_[ A[0], 1, 2, 3, A[1] ]    # mix vecs and scalars
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], [1, 2, 3], A[1] ]  # lists
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], (1, 2, 3), A[1] ]  # tuples
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

: np.r_[ A[0], 1:4, A[1] ]        # same, 1:4 == arange(1,4) == 1,2,3
  array([ 1.,  0.,  0.,  1.,  2.,  3.,  0.,  1.,  0.])

(使用方括号[]而不是round ()的原因是Python扩展了,例如1:4的正方形--重载的奇迹。)

票数 414
EN

Stack Overflow用户

发布于 2013-12-20 02:23:40

使用numpy.append

代码语言:javascript
复制
>>> a = np.array([[1,2,3],[2,3,4]])
>>> a
array([[1, 2, 3],
       [2, 3, 4]])

>>> z = np.zeros((2,1), dtype=int64)
>>> z
array([[0],
       [0]])

>>> np.append(a, z, axis=1)
array([[1, 2, 3, 0],
       [2, 3, 4, 0]])
票数 178
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8486294

复制
相关文章

相似问题

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