在Python中将np.arrays附加到空白数组中

时间:2014-09-17 07:15:27

标签: python arrays

我正在尝试从np.array中的循环中保存结果。

    import numpy as np
    p=np.array([])
    points= np.array([[3,0,0],[-1,0,0]])

    for i in points:
       for j in points:
          if j[0]!=0:
             n=i+j
       p= np.append(p,n)

然而,结果数组是一个包含6个成员的一维数组。

    [2.  0.  0. -2.  0.  0.]

相反,我正在寻找,但一直无法生产:

    [[2,0,0],[-2,0,0]]

有没有办法得到上面的结果?

谢谢。

2 个答案:

答案 0 :(得分:2)

一种可能性是将p转换为列表,并在最后将其转换为NumPy数组:

p = []
for i in points:
   ...
   p.append(n)
p = np.array(p)

答案 1 :(得分:0)

您正在寻找的是垂直堆叠结果:

import numpy as np
p=np.empty((0,3))
points= np.array([[3,0,0],[-1,0,0]])

for i in points:
  for j in points:
    if j[0]!=0:
      n=i+j
  p= np.vstack((p,n))
print p

给出:

[[ 2.  0.  0.]
 [-2.  0.  0.]]

虽然您之后也可以重塑您的结果:

import numpy as np
p=np.array([])
points= np.array([[3,0,0],[-1,0,0]])

for i in points:
  for j in points:
    if j[0]!=0:
      n=i+j
  p= np.append(p,n)
p=np.reshape(p,(-1,3))
print p

这给出了相同的结果

我必须警告你,如果j[0]!=0代码失败,那么你的代码会失败,因为n未定义......

np.vstack np.empty np.reshape