使用python和numpy,如何将1d列表转换为np.array列表?

使用python和numpy,如何将1d列表转换为np.array列表?,python,arrays,python-2.7,numpy,Python,Arrays,Python 2.7,Numpy,以下是输入: input_list=[a,b,c,d] 我希望得到输出 output_list=[np.array([a]),np.array([b]),np.array([c]),np.array([d])] 我知道每个元素上的循环也应该起作用,但我想知道是否有快速的方法来完成这项工作?提前谢谢 这是我的三种方法的代码,速度没有太大差别,但第二和第三种方法要整洁得多 第一种方法:t.append(np.array([i])),成本时间=14.1404731274秒 import time

以下是输入:

input_list=[a,b,c,d]
我希望得到输出

output_list=[np.array([a]),np.array([b]),np.array([c]),np.array([d])]
我知道每个元素上的循环也应该起作用,但我想知道是否有快速的方法来完成这项工作?提前谢谢


这是我的三种方法的代码,速度没有太大差别,但第二和第三种方法要整洁得多

第一种方法:
t.append(np.array([i]))
,成本时间=
14.1404731274秒

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))
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))
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))
第二种方法:
t=[np.数组([x]),用于输入值中的x]
,成本时间=
13.7779290676秒

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))
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))
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))
第三种方法:
t=np.array(input\u value)[:,None]
,cost\u time=
13.2799420357秒

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))
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))
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))

您可以使用列表:

import numpy as np
[np.array([x]) for x in input_list]
output_gen = (np.array([item]) for item in input_list)
但也许你需要这个:

np.array(input_list)[:, None]       

使用列表理解怎么样

output_list = [ np.array([item]) for item in input_list]
或者更好的生成器理解:

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

我不确定你的第二种方法。它将所有内容放在一个数组中,而OP希望列表中的每个元素都有不同的数组。如果元素是大小不同的列表,则第二个元素将生成列表的对象数组,而不是数组列表。如果它们都是相同大小的1d列表,则结果将是一个2d数组。只有当它们是标量时,
None
才有帮助。@kmario23是的。第二个选项只是猜测OP可能想要什么。@hpaulj这就是我的假设。如果是一个标量列表,1d列表更合适。
np.array(input_list)[:,None]
是最简洁的方法。每个人都建议列表理解,这当然是一个列表循环。基本上就是这样。只要你的目标是一个清单,它会很快得到
numpy
函数将生成某种数组。