8
A
回答
23
我相信这是你想要vstack
p=array_2
q=array_2
p=numpy.vstack([p,q])
13
一的学习实验的最佳方式,但我要说你想np.vstack
虽然有做同样的事情的其他方式:
a = np.ones((20,100,3))
b = np.vstack((a,a))
print b.shape # (40,100,3)
或
b = np.concatenate((a,a),axis=0)
编辑
正如一个音符,我的机器在OP的问题大小的数组,我发现np.concatenate
大约为2x比np.vstack
In [172]: a = np.random.normal(size=(20,100,3))
In [173]: c = np.random.normal(size=(20,100,3))
In [174]: %timeit b = np.concatenate((a,c),axis=0)
100000 loops, best of 3: 13.3 us per loop
In [175]: %timeit b = np.vstack((a,c))
10000 loops, best of 3: 26.1 us per loop
9
快可能是值得一提的
np.concatenate((a1, a2, ...), axis=0)
是一般形式,vstack和hstack是特定情况。我发现最简单的方法就是知道我想堆叠哪个维度,并将其作为np.concatenate的参数提供。
3
顺便说一句,还有r_
:
>>> from scipy import *
>>> a = rand(20,100,3)
>>> b = rand(20,100,3)
>>> a.shape
(20, 100, 3)
>>> b.shape
(20, 100, 3)
>>> r_[a,b].shape
(40, 100, 3)
>>> (r_[a,b] == vstack([a,b])).all()
True
4
我试图R_和vstack和结果之间的一个小Benchmark是很有意思:
import numpy as np
NCOLS = 10
NROWS = 2
NMATRICES = 10000
def mergeR(matrices):
result = np.zeros([0, NCOLS])
for m in matrices:
result = np.r_[ result, m]
def mergeVstack(matrices):
result = np.vstack(matrices)
def main():
matrices = tuple(np.random.random([NROWS, NCOLS]) for i in xrange(NMATRICES))
mergeR(matrices)
mergeVstack(matrices)
return 0
if __name__ == '__main__':
main()
然后我跑探查:
python -m cProfile -s cumulative np_merge_benchmark.py
和结果:
ncalls tottime percall cumtime percall filename:lineno(function)
...
1 0.579 0.579 4.139 4.139 np_merge_benchmark.py:21(mergeR)
...
1 0.000 0.000 0.054 0.054 np_merge_benchmark.py:27(mergeVstack)
所以vstack的方式是77倍快!
相关问题
- 1. numpy:按组的聚合4D阵列
- 2. 组合的条件:numpy的阵列
- 3. 在numpy中组合矩阵
- 4. 聚合numpy蒙面阵列
- 5. 合并多个numpy阵列
- 6. NumPy的组阵列存储
- 7. 结合numpy阵列和重塑列表
- 8. 合并两列在numpy的阵列
- 9. 阵列组合的阵列
- 10. 阵列矩阵numpy
- 11. 混合类型的NumPy数组/矩阵
- 12. 组合两个numpy的矩阵
- 13. 拼合3 d numpy的阵列
- 14. numpy的:拼合的2 d阵列
- 15. 合并numpy的阵列从环
- 16. 结合numpy的阵列循环
- 17. 结合numpy阵列和掩模
- 18. numpy的:阵列
- 19. 列组合矩阵
- 20. Fortran阵列组合
- 21. Matlab组合阵列
- 22. D3 - 组合阵列
- 23. Powershell - 组合阵列
- 24. 最有效的方法来组合和分离numpy阵列
- 25. 组合多个阵列numpy的成一个
- 26. numpy的追加数组阵列
- 27. 用数组切片多维numpy阵列
- 28. numpy三元组阵列到RGB图像
- 29. numpy数组到排列矩阵
- 30. 数组numpy的阵列调整
不确定为什么我第一次访问该页面时没有显示您的答案。 +1用于首先推荐vstack。 – JoshAdel
请注意,文档建议现在使用'stack'或'concatenate',并且vstack仅支持向后兼容性,请参阅:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/ numpy.vstack.html – NOhs