私は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. 組み合わせる複数のアレイ
- 3. Smartyアレイを2つ以上組み合わせる
- 4. numpy配列のリストとリシェイプを組み合わせる
- 5. numpy配列の値を組み合わせる
- 6. Python itertoolsの組み合わせの組み合わせ
- 7. データウェアハウス:冗長な組み合わせの組み合わせ
- 8. Javascriptアレイとオブジェクトキーの組み合わせプロパティの検索
- 9. numpy関数の時間効率の良い組み合わせ
- 10. 要素の組み合わせnumpy配列のリスト
- 11. 配列と組み合わせパターンの組み合わせを見つける
- 12. クエリの組み合わせを組み合わせるためのLinq構文
- 13. 2-組み合わせC++
- 14. 組み合わせ質問
- 15. 組み合わせ変数
- 16. の組み合わせR
- 17. 組み合わせルックアップ値
- 18. 組み合わせは
- 19. ワイアードの組み合わせ
- 20. 組み合わせ条件
- 21. 組み合わせルビー
- 22. Pythonの組み合わせ
- 23. 組み合わせ選択
- 24. ReferenceManyFields/ReferenceArrayField組み合わせ
- 25. Rは組み合わせ
- 26. 組み合わせmysql mongodb
- 27. 組み合わせが
- 28. マッチ組み合わせが
- 29. の組み合わせR
- 30. 選択組み合わせ
私が最初にページにアクセスしたときにあなたの答えが表示されなかった理由がわかりません。最初にvstackを提案するための+1。 – JoshAdel
ドキュメントに 'stack'や' concatenate'を使用することが提案されており、そのvstackは下位互換性のためにのみサポートされていますので、ご注意ください:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/ numpy.vstack.html – NOhs