我對 numpy 很陌生,我嘗試使用 vstack 但它似乎真的錯了,因為它每次都會在記憶體中創建一個副本。
初始結構為:
[[1,2,3],
[1,2,3],
[1,2,3]]
它將被映射到:
[[[3,2,1,2], [4,5,2,7], [7,4,1,3]],
[[3,2,1,2], [4,5,2,7], [7,4,1,3]],
[[3,2,1,2], [4,5,2,7], [7,4,1,3]]]
這里的數字沒有任何意義,只是為了展示結構,基本上每個整數都被解碼為一個整數串列N -> [N_1, N_2, N_3, N_4]
對于背景關系,我有 32 位編碼的像素,我必須將它們解碼為 argb
uj5u.com熱心網友回復:
創建 uint8 視圖:
>>> ar = np.random.randint(0, 2 ** 31, (3, 3))
>>> ar
array([[ 437217537, 524850213, 771706759],
[ 467263015, 219221544, 1712453711],
[1444860139, 625411292, 1224272631]])
>>> ar[1:] = ar[0] # make the layout the same as the example of OP
>>> ar
array([[437217537, 524850213, 771706759],
[437217537, 524850213, 771706759],
[437217537, 524850213, 771706759]])
>>> ar.view(np.uint8).reshape(3, 3, -1)
array([[[ 1, 105, 15, 26],
[ 37, 148, 72, 31],
[135, 79, 255, 45]],
[[ 1, 105, 15, 26],
[ 37, 148, 72, 31],
[135, 79, 255, 45]],
[[ 1, 105, 15, 26],
[ 37, 148, 72, 31],
[135, 79, 255, 45]]], dtype=uint8)
>>> int.from_bytes(bytes(_[0, 0]), 'little') == ar[0, 0]
True
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507375.html
上一篇:如何解決IndexError:單個位置索引器超出范圍
下一篇:在單個子圖中繪制每列
