2012-07-10 112 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' 
相關問題