2017-07-18 143 views
1

我試圖用一堆列表填充二維數組。我知道我可以將它視爲一個3D數組,並且訪問數據的方式完全相同,但出於我的目的,我真的更喜歡將它當作一個二維數組,而數組以列表作爲元素而不是數字。守則用列表填充二維數組

一個變種我已經試過:

import numpy as np 

a = np.empty([2, 2]) 
b = [[1, 2], [3, 4], [5, 6], [7, 8]] 

a[0][0] = b[0] 

print a[0][0] 

我明白爲什麼它不工作的方式,而且會使用3D陣列工作。

在C中,我會用指向要填充的數據的指針填充該二維數組,但我不知道如何在python中做類似的事情。所以,現在

a = np.empty([2, 2],dtype=object)

我們引用的二維數組,所有設置爲None,如:

回答

1

您可以在陣列的類型設置爲dtype=object

>>> np.empty([2, 2],dtype=object) 
array([[None, None], 
     [None, None]], dtype=object) 

接下來,我們可以分配一個元素的對象:

>>> a[0][0] = [[1, 2], [3, 4], [5, 6], [7, 8]] 
>>> a 
array([[list([[1, 2], [3, 4], [5, 6], [7, 8]]), None], 
     [None, None]], dtype=object) 

注意,對於numpy,這些對象是黑盒。所以你不能通過使用幾個賦值語句來構造一個3d矩陣,然後計算出它就好像它是一個3d矩陣。

+0

numpy把它們當作黑匣子就好了,因爲我的用例就是那種想要的行爲。 –