2014-12-05 61 views
0

我想在numpy矩陣中存儲一個元組,但是它好像會返回一個錯誤。有沒有辦法去解決它?有沒有辦法讓numpy矩陣存儲對象?

>>> import numpy 
>>> y = numpy.zeros((4,4)) 
>>> y[1][1] = (1,1) 

ValueError: setting an array element with a sequence. 

感謝

+0

在特殊情況下,您要存儲的所有元組都是n元組數組,只需使用(n + 1)-d ndarray即可。這將更快,更高效,並且更容易處理。 – jme 2014-12-05 16:31:31

回答

1

使用dtype=object,你可以把任何東西你的數組中要:

>>> arr = np.zeros((4, 4), dtype=object) 
>>> arr[1, 1] = (1, 1) 
>>> arr 
array([[0, 0, 0, 0], 
     [0, (1, 1), 0, 0], 
     [0, 0, 0, 0], 
     [0, 0, 0, 0]], dtype=object) 
1

您可以通過使用numpy's structured arrays做到這一點。例如:

>>> import numpy as np 
>>> y = np.zeros((4, 4), dtype=("i8, i8")) 
array([[(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)]], 
     dtype=[('f0', '<i8'), ('f1', '<i8')]) 

>>> y[1,1] = (1,1) 
>>> y 
array([[(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (1L, 1L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)]], 
     dtype=[('f0', '<i8'), ('f1', '<i8')]) 
相關問題