簡體   English   中英

使用可變長度索引向量在python中創建2D列表

[英]Create 2D lists in python with variable length indexed vectors

我正在處理圖像處理問題,其中有類似以下的代碼(下面編寫的代碼僅說明了我要解決的問題的類型):

for i in range(0,10):
  for j in range(0,10):
    number_length = round(random.random()*10)
    a = np.zeros(number_length)
    Z[i][j] = a

我想做的是創建某種2D列表或np.array(不確定),在這里我實質上為圖像中的每個像素索引一個術語,並為每個像素提供一個矢量/值列表此外,由於不能預期其長度,因此每個索引像素的每個矢量的長度都互不相同。 最好的方法是什么?

在我的MATLAB代碼中,解決方法很簡單:我定義了2D單元,然后將任何矢量分配給2D單元中的任何元素。 由於單元格不會抱怨每個索引向量的相干長度,所以這是一件好事。 在python中處理此問題的等效最佳解決方案是什么?

理想情況下,解決方案不應涉及預期的最大長度“一”對任何像素,並使得所有索引向量的長度相同(因為這意味着我必須做一些補零如果索引向量是高維會消耗內存並且這些高維向量在整個圖像中都是稀疏的)。

NumPy數組不起作用,因為它需要固定的尺寸。 您可以使用二維列表(即列表列表),其中每個元素可以是任意長度的數組。 這類似於您在Matlab中的設置,使用了矢量的二維單元陣列。

嘗試這個:

z = [[np.zeros(np.random.randint(10)+1) for j in range(10)] for i in range(10)]

這將創建一個10x10列表,其中z [i] [j]是零長度的NumPy數組,其長度為1至10。

編輯(注釋中請求的嵌套循環):

z = [[None for j in range(10)] for i in range(10)]

for i in range(len(z)):
    for j in range(len(z[i])):
        z[i][j] = np.zeros(np.random.randint(10)+1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM