2012-07-10 71 views
1

我有列表(和列表的列表)作为标准的数据结构(我的大部分函数返回列表/列表的列表)。但现在我必须使用一些Numpy功能。在使用numpy/scipy中的任何函数之前,是否必须将所有列表转换为numpy数组。例如使用列表,而不是numpy数组

>>>x= [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
>>>y= [ 1, 10, 20] 
>>>dot(x,y) 
#array([ 81, 174, 267]) 
>>>X_np=array(x) 
>>>y_np=array(y) 
>>>dot(x_np,y_np) 
#array([ 81, 174, 267]) 

作为这种情况下的点(X,Y)和点(x_np,y_np),得到相同的结果,因此,使用列表,而不是numy阵列不使差....但是这种所有numpy/scipy函数的情况下,或者我必须在调用任何/所有numpy/scipy函数之前做my_np_array= array(my_list)

回答

3

几乎所有的numpy/scipy函数都会在输入之前将输入转换为数组。但为什么相信我?只要尝试你需要的任何一个,看看它是否有效。例如,

例外将是任何修改阵列的功能,例如np.put

>>> np.put([1,2,3],[0,1],[2,1]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 394, in put 
    return a.put(ind, v, mode) 
AttributeError: 'list' object has no attribute 'put' 
相关问题