2017-03-26 4 views
0

2つの配列を連結するためのコードがあります。多くの配列をPythonで連結する

import numpy as np 
from hmmlearn import hmm 
model = hmm.MultinomialHMM(n_components=3, n_iter=10,algorithm='map',tol=0.00001) 
sequence3 = np.array([[2, 1, 0, 1]]).T 
sequence4 = np.array([[2, 1, 0, 1, 1]]).T 
sample = np.concatenate([sequence3, sequence4]) 
lengths = [len(sequence3), len(sequence4)] 
model.fit(sample,lengths) 

正常に動作しています。しかし、今私は2つ以上の配列を持っている場合。私は10の配列を持っていると言いましょう。どのように私は同じプロセスを作ることができますか?

import numpy as np 
from hmmlearn import hmm 
model = hmm.MultinomialHMM(n_components=3, n_iter=10,algorithm='map',tol=0.00001) 
sample = np.array([]) 
lengths = [] 
for i in range(1:10) 
    ????????????? 
model.fit(sample,lengths) 
+0

だから、おそらく、新しい配列 'sample'とそれらの長さがリスト' lengths'に必要でしょうか? – kmario23

+0

多くの配列を一度に連結することができます。引数リストにすべてを入れるだけです。しかし、次元は一致しなければならない。 – hpaulj

答えて

1

複数の配列を連結するには、以前のすべての配列を連結した配列を連結するだけです。

# Create arrays 
arrays=[ 
    np.array([1,2,3]), 
    np.array([4,5,6]), 
    np.array([7,8,9]) 
] 

# Create an array to return to 
sample = np.array([]) 

for array in arrays: 
    sample = np.concatenate([sample, array]) 

# Print results 
print('sample', sample) 
print('length', len(sample)) 
+0

それでも、私はこのエラー "ValueError:多項分布からのサンプルを期待しています。"この行のmodel.fit(サンプル、長さ) – user1927468

+0

ちょうど 'concatenate(arrays) 'を使用する – hpaulj

+0

このエラーがあります。" ValueError:この配列の長さ配列[3、3、3]のサンプルが1つ以上あります。model.fit (np.concatenate(arrays)、lengths) – user1927468

0

あなたはリストとしてあなたの配列は、言うvstackある

Equivalent to np.concatenate(tup, axis=0) if tup contains arrays that are at least 2-dimensional.

ストアを使用することができますarray_list

print np.vstack(array_list) 

サンプル:

import numpy as np 
sequence3 = np.array([[2, 1]]).T 
sequence4 = np.array([[2, 5]]).T 
sequence5 = np.array([[4, 5]]).T 
sequence6 = np.array([[6, 7]]).T 
array_list=[sequence3,sequence4,sequence5,sequence6] 
sample = np.concatenate([sequence3, sequence4]) 
lengths = [len(sequence3), len(sequence4)] 
print np.vstack(array_list) 

[[2] 
[1] 
[2] 
[5] 
[4] 
[5] 
[6] 
[7]] 

希望すると助かります!

+0

配列はすでに2次元なので、私は軸= 0で連結することを提案します。 – hpaulj