python - 在 python 中替换重复 np.vstack 的有效方法?

标签 python numpy

我正在尝试实现这个 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/

相关文章:

python - 更改 Python 中的函数实现

Python 2.7.5 在用户输入时退出

python - 将邻接矩阵转换为抽象单纯复形

python - 点乘不同 dtype 的大密集矩阵(float x boolean)

python - 尝试理解 Keras 中的矩阵形状时遇到问题?

python - 通过平均或重新组合一个 numpy 2d 数组来调整大小

python - 在 python 中,如何进行非阻塞系统调用?

python - 将 xlabel 包裹在 Seaborn Plot 中

python - sphinx-build 失败 - autodoc 无法导入/查找模块

python - 从python中的文本文件中读取两列数字