2017-03-28 5 views
-1

が入力された:pythonとnumpyを使って、1dリストをnp.arrayのリストに変換する方法は?ここで

input_list=[a,b,c,d] 

私は、各要素のループでも動作するはずですが、私はそこにこれを完了するための簡単な方法であるかどうかを疑問に思うことを知っている出力

output_list=[np.array([a]),np.array([b]),np.array([c]),np.array([d])] 

を得ることを期待しますか?前もって感謝します。


はここ3つの方式のため、スピードには大きな違いはありません私のコードですが、第二&第三は非常に滑らかな印象です。 :

1方法:t.append(np.array([i]))、cost_time = 14.1404731274 seconds

import time 
start_time = time.time() 
for index, row in modified_test_store_raw_df[modified_test_store_raw_df.Open==1].iterrows(): 
    input_value=(list(modified_test_store_raw_df.loc[index,'tuple_map'])) 
    t=[] 
    for i in input_value: 
     t.append(np.array([i])) 
print("--- %s seconds ---" % (time.time() - start_time)) 

2方法:t=[np.array([x]) for x in input_value]、cost_time = 13.7779290676 seconds

import time 
start_time = time.time() 
for index, row in modified_test_store_raw_df[modified_test_store_raw_df.Open==1].iterrows(): 
    input_value=(list(modified_test_store_raw_df.loc[index,'tuple_map'])) 
    t=[np.array([x]) for x in input_value] 
print("--- %s seconds ---" % (time.time() - start_time)) 

3方法:t=np.array(input_value)[:, None]、cost_time = 13.2799420357 seconds

import time 
start_time = time.time() 
for index, row in modified_test_store_raw_df[modified_test_store_raw_df.Open==1].iterrows(): 
    input_value=(list(modified_test_store_raw_df.loc[index,'tuple_map'])) 
    t=np.array(input_value)[:, None] 
print("--- %s seconds ---" % (time.time() - start_time)) 
+0

誰もが当然のリストループでリストの内包を、示唆しています。それは基本的にそれです。あなたの目標がリストである限り、それはすぐに得られます。 'numpy'関数はある種の配列を生成します。 – hpaulj

答えて

0

あなたは、リストの内包表記を使用することができます

import numpy as np 
[np.array([x]) for x in input_list] 

をしかし、多分あなたは、この代わりに、必要があります。

np.array(input_list)[:, None]  
+0

2番目のアプローチについてはわかりません。 OPはすべてリスト内の各要素に対して異なる配列を要求しますが、すべての要素を1つの配列に格納します。 – kmario23

+0

要素が異なるサイズのリストである場合、2番目の要素は配列のリストではなく、リストのオブジェクト配列を生成します。それらがすべて同じサイズの1dリストである場合、結果は2次元配列になります。彼らがスカラーである場合にのみ、 'None'が助けます。 – hpaulj

+0

@ kmario23うん。第2の選択肢は、OPが望むものを推測することです。 – Psidom

0

どのようにリストの内包表記を使用してはどうですか?

output_list = [ np.array([item]) for item in input_list] 

または、はるかに優れた発電の理解:

output_gen = (np.array([item]) for item in input_list) 
関連する問題