Python Numpy填充3D数组

时间:2018-09-12 08:47:55

标签: python arrays image numpy

我有原始数据,已转换为RGB值。这些值在[R,G,B]之类的列表中。因此,基本上我有[[R,G,B],...,[R,G,B]]。现在,我想按width * height * 3制作一个矩阵。

rgb_list = []

for i in range(0, channel_bytes):
    r = channel_1.__getitem__(i)
    g = channel_2.__getitem__(i)
    b = channel_3.__getitem__(i)
    rgb_list.append([r, g, b])

image_matrix = np.array(rgb_list)
image_matrix.reshape(image_height, image_width, 3)
print(image_matrix)

仍然给我以下输出:

[[22 21 13]
 [30 23 23]
 [19 23 16]
 ..., 
 [17 17 18]
 [18 17 10]
 [16 17 18]]

但是应该是

[[[22, 21, 13]],
 [[30, 23, 23]],
 ...,
[[16, 17, 18]]]

2 个答案:

答案 0 :(得分:0)

import numpy as np

L = np.asarray([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
L.reshape(1, 6, 3)

# Output:
array([[[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12],
        [13, 14, 15],
        [16, 17, 18]]])

不知道你为什么要这么做...

答案 1 :(得分:0)

已修复!

它重塑了矩阵,但没有保存更改。应该是:

image_matrix = image_matrix.reshape(image_height,image_width,3)