我正在尝试实现这个 post在 python 中。
import numpy as np
x = np.array([0,0,0])
for r in range(3):
x = np.vstack((x, np.array([-r, r, -r])))
x
获取这个值
array([[ 0, 0, 0],
[ 0, 0, 0],
[-1, 1, -1],
[-2, 2, -2]])
我担心重复 np.vstack
的运行时效率。有没有更有效的方法来做到这一点?
最佳答案
构建数组或列表的列表,并将np.array
(或vstack
)应用到它一次:
In [598]: np.array([[-r,r,-r] for r in [0,0,1,2]])
Out[598]:
array([[ 0, 0, 0],
[ 0, 0, 0],
[-1, 1, -1],
[-2, 2, -2]])
但是如果列的模式是一致的,两个数组相互广播会更快
In [599]: np.array([-1,1,-1])*np.array([0,0,1,2])[:,None]
Out[599]:
array([[ 0, 0, 0],
[ 0, 0, 0],
[-1, 1, -1],
[-2, 2, -2]])
关于python - 在 python 中替换重复 np.vstack 的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56333492/