我正在尝试从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]]
有没有办法得到上面的结果?
谢谢。
答案 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
未定义......