2017-08-13 11 views

答えて

2

私はあなたがlistravel、最後の変換によって平らその後、最初の配列に変換する必要があると思う:

a = [np.array([x]) for x in list('abcdefghij')] 
print (a) 
[array(['a'], 
     dtype='<U1'), array(['b'], 
     dtype='<U1'), array(['c'], 
     dtype='<U1'), array(['d'], 
     dtype='<U1'), array(['e'], 
     dtype='<U1'), array(['f'], 
     dtype='<U1'), array(['g'], 
     dtype='<U1'), array(['h'], 
     dtype='<U1'), array(['i'], 
     dtype='<U1'), array(['j'], 
     dtype='<U1')] 

b = np.array(a).ravel().tolist() 
print (b) 
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 

chain.from_iterableによってflattentingと別の解決策:

from itertools import chain 

b = list(chain.from_iterable(a)) 
print (b) 
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 
0

を私が達成したコードを発見しました私の要求: x = [str(i [0])for the_listのi]

+0

は 'str'するために必要な変換ですか? – jezrael

0

よくある一般的なpリストの内側の配列(または配列のオブジェクトdtype配列)を '平坦化'する方法は、concatenateの関数の1つを使用することです。 0Dつを含む異なる長さ)の配列を含むリストを有する例えば

In [600]: ll = [np.array('one'), np.array(['two','three']),np.array(['four'])] 
In [601]: ll 
Out[601]: 
[array('one', 
     dtype='<U3'), array(['two', 'three'], 
     dtype='<U5'), array(['four'], 
     dtype='<U4')] 
In [602]: np.hstack(ll).tolist() 
Out[602]: ['one', 'two', 'three', 'four'] 
In [603]: np.hstack(ll).tolist() 
Out[603]: ['one', 'two', 'three', 'four'] 

私は0D配列が含まれているためhstackを使用しなければなりませんでした。もし彼らがすべて1d concatenateだったら十分でしょう。


アレイのすべてが1つの文字列が含まれている場合は、他のソリューションが正常に動作

In [608]: ll = [np.array(['one']), np.array(['two']),np.array(['three']),np.array(['four'])] 
In [609]: ll 
Out[609]: 
[array(['one'], 
     dtype='<U3'), array(['two'], 
     dtype='<U3'), array(['three'], 
     dtype='<U5'), array(['four'], 
     dtype='<U4')] 

In [610]: np.hstack(ll).tolist() 
Out[610]: ['one', 'two', 'three', 'four'] 

In [611]: np.array(ll) 
Out[611]: 
array([['one'], 
     ['two'], 
     ['three'], 
     ['four']], 
     dtype='<U5') # a 2d array which can be raveled to 1d 

In [612]: [i[0] for i in ll]   # extracting the one element from each array 
Out[612]: ['one', 'two', 'three', 'four'] 
関連する問題