私は2つの20x100x3 NumPyアレイを40×100×3アレイに結合したい、つまりアレイにもっと多くのラインを追加するだけです。私は、私が望む機能によって混乱しています。それはvstack、hstack、column_stackなのでしょうか?NumPyアレイを組み合わせる
8
A
答えて
23
私が試している、それはあなたが学習の最良の方法の
p=array_2
q=array_2
p=numpy.vstack([p,q])
13
一つにしたいvstackだと信じていますが、同じことをやって、他の方法がありますが、私はあなたが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)
EDIT
ちょうどメモとして、OPの問題のサイズの配列のための私のマシン上で、私はnp.concatenate
は言及する価値があるかもしれません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
比べて約2倍高速であることを見つけること
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間にほとんどのベンチマークを試してみましたが、結果は非常に興味深いです:
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. Powershell - アレイを組み合わせる
- 2. numpy配列の値を組み合わせる
- 3. データウェアハウス:冗長な組み合わせの組み合わせ
- 4. numpy関数の時間効率の良い組み合わせ
- 5. 組み合わせ質問
- 6. 組み合わせmysql mongodb
- 7. ロックの組み合わせ
- 8. 組み合わせ条件
- 9. 組み合わせ変数
- 10. 組み合わせが
- 11. 組み合わせ選択
- 12. ワイアードの組み合わせ
- 13. 2-組み合わせC++
- 14. PHPデカルトプロダクトキーを組み合わせると、私は、次の2つのアレイ持っ
- 15. mod_accessとmod_authを組み合わせる
- 16. Vim:autocmdを組み合わせる?
- 17. スカラオプションを組み合わせる[Iterable [_]]
- 18. * -servlet.xmlとapplicationContext.xmlを組み合わせる
- 19. クエリを組み合わせる
- 20. DIとコンストラクタパラメータを組み合わせる?
- 21. Enumを組み合わせる
- 22. 2バイトを組み合わせる
- 23. 機能を組み合わせる
- 24. RSpecフィルターを組み合わせる?
- 25. ctypesとswigを組み合わせる
- 26. 列を組み合わせる
- 27. asmxとCodeBehindを組み合わせる
- 28. クエリ結果を組み合わせる
- 29. ListView.CheckedListViewItemCollectionsを組み合わせる
- 30. SQL Serverクエリを組み合わせる
私が最初にページにアクセスしたときにあなたの答えが表示されなかった理由がわかりません。最初にvstackを提案するための+1。 – JoshAdel
ドキュメントに 'stack'や' concatenate'を使用することが提案されており、そのvstackは下位互換性のためにのみサポートされていますので、ご注意ください:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/ numpy.vstack.html – NOhs