簡體   English   中英

如何制作“ ndarrays的ndarray的元組”?

[英]How can I make a “tuple of an ndarray of ndarrays”?

如何創建包含兩個“ numpy.ndarray”的元組? 如果這樣做,我可以在元組中更新ndarray嗎?

我使用實現某些神經網絡的python代碼進行工作,以使其與我自己的輸入數據一起使用。 目的是讀取圖像文件並根據神經網絡的輸出返回輸出。 我從邁克爾·尼爾森(Michael Nielsen)撰寫的關於神經網絡的出色在線書中摘錄了代碼( 鏈接 )。

原始代碼從稱為MNIST的著名數據集中讀取,並存儲為文件,該文件是python的pickle函數的輸出。 現在,通過data = Pickle.Load()調用讀取數據集中的輸入數據。 Pickle加載數據集的數據在執行此行時,數據變量將作為“長度為2的元組”加載,其中包含兩個“長度為10000的Numpy ndArrays”,每個ndarray元素都是另一個長度為784的ndarray(實際上是a的值28x28圖片)。

現在,問題是我試圖覆蓋輸入,以便從正常圖像文件讀取而不是從腌制文件中讀取。 腌制的文件最初包含N個圖像文件。 我正在嘗試從單個圖像文件中裁剪N個圖像文件並重組數據,以使其與原始格式兼容。

我成功讀取了圖像文件,裁剪了圖像窗口,創建了最里面的ndarray,其中包含784個像素值(單個圖像)。 但是,如何創建一個包含每個新圖像的ndarray,然后將它們放入一個元組中? 有沒有辦法在單個numpy命令中重組我的數據?

我對您想要的內容進行了很多猜測,但是以下示例創建了一個數組元組:

驚嚇到(784)形狀的“圖像”:

In [1027]: img=np.ones((28,28),int)
In [1028]: imgr = img.ravel()
In [1029]: imgr.shape
Out[1029]: (784,)

“堆疊”該圖像的一堆副本。 np.concatenate對於連接數組也很方便,但是np.array自動將它們連接到新軸上。

In [1030]: imgs=np.array([imgr.copy(),imgr.copy()*2,imgr.copy()*3])
In [1031]: imgs
Out[1031]: 
array([[1, 1, 1, ..., 1, 1, 1],
       [2, 2, 2, ..., 2, 2, 2],
       [3, 3, 3, ..., 3, 3, 3]])
In [1032]: imgs.shape
Out[1032]: (3, 784)

創建元組很簡單(基本的Python),只是(x, y)語法。

In [1033]: tup=(imgs, imgs.copy())
In [1034]: tup
Out[1034]: 
(array([[1, 1, 1, ..., 1, 1, 1],
        [2, 2, 2, ..., 2, 2, 2],
        [3, 3, 3, ..., 3, 3, 3]]), array([[1, 1, 1, ..., 1, 1, 1],
        [2, 2, 2, ..., 2, 2, 2],
        [3, 3, 3, ..., 3, 3, 3]]))

嚴格來說,元組是不可變的。 您不能像列表那樣替換元素。 但是由於元素是數組,因此可以“就地”更改它們。

In [1035]: tup[0][:]*=2
In [1036]: tup
Out[1036]: 
(array([[2, 2, 2, ..., 2, 2, 2],
        [4, 4, 4, ..., 4, 4, 4],
        [6, 6, 6, ..., 6, 6, 6]]), array([[1, 1, 1, ..., 1, 1, 1],
        [2, 2, 2, ..., 2, 2, 2],
        [3, 3, 3, ..., 3, 3, 3]]))

所以在這里我將第一個數組按比例縮放了2

縮放第一個數組的圖像之一,我可以使用:

In [1038]: tup[0][1,:] += 5
In [1039]: tup
Out[1039]: 
(array([[2, 2, 2, ..., 2, 2, 2],
        [9, 9, 9, ..., 9, 9, 9],
        [6, 6, 6, ..., 6, 6, 6]]), array([[1, 1, 1, ..., 1, 1, 1],
        [2, 2, 2, ..., 2, 2, 2],
        [3, 3, 3, ..., 3, 3, 3]]))

暫無
暫無

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

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