Итак, вы хотите, конечно, массив формы m x n x r , где r - размер кортежа.
Один из способов сделать это, который мне кажется наиболее простым, состоит в том, чтобы: (i) явно создать массив трехмерной сетки, идентичный исходному двумерному массиву, за исключением добавления последнего измерения, r, который был добавлен, а затем; (ii) отобразите свои кортежи rgb на эту сетку.
>>> # first, generate some fake data:
>>> m, n = 5, 4 # rows & cols, represents dimensions of original image
>>> D = NP.random.randint(0, 10, m*n).reshape(m, n)
>>> D
array([[8, 2, 2, 1],
[7, 5, 0, 9],
[2, 2, 9, 3],
[5, 7, 3, 0],
[5, 8, 1, 7]])
Теперь создайте массив Grid:
>>> G = NP.zeros((m, n, r), dtype='uint')
Думайте о G как о m x n прямоугольной сетке - такой же, как D - но с каждой из 20 ячеек, хранящих не целое число (как D), а кортеж rgb, поэтому:
>>> # placing the color pixel (209, 127, 87) at location 3,2:
>>> G[3,2] = (209, 124, 87)
Чтобы получить эту конструкцию, вы можете увидеть кортеж rgb с / в сетке G, посмотрев на три последовательных фрагмента G:
>>> G[:,:,0] # red
>>> array([[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 209, 0, 0],
[ 0, 0, 0, 0, 0]], dtype=uint8)
>>> G[:,:,1] # green
>>> array([[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 124, 0, 0],
[ 0, 0, 0, 0, 0]], dtype=uint8)
>>> G[:,:,2] # blue
>>> array([[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[ 0, 0, 87, 0, 0],
[ 0, 0, 0, 0, 0]], dtype=uint8)
Теперь, чтобы фактически получить желаемый результат, нам просто нужно (i) создать сетку G, массив 3D NumPy, первые два измерения которого взяты из массива, хранящегося в вашем файле .DCM, и чье третье измерение равно три от длины кортежа rgb; затем (ii) отобразить кортежи rgb на эту сетку, G.
>>> # create the Grid
>>> G = NP.zeros((m, n, r), dtype='uint')
>>> # now from the container that holds your rgb tuples, create *three* m x n arrays,
>>> # one for each item in your rgb tuples
>>> # now just map the r values (1st itm in each rgb tuple) to the 3D grid
>>> G[:,:,0] = r_vals
>>> G[:,:,1] = g_vals
>>> G[:,:,2] = b_vals
>>> G.shape
(5, 4, 3)