Я даже не уверен, возможно ли это, но я довольно плохо знаком с Python.
У меня есть три набора 3D-данных, каждый из которых представляет собой массив размером 64 x 64 x 50.Я пытаюсь объединить каждый набор 3D-данных в одно 3D-изображение RGB, где каждая ячейка представлена значением RGB, а каждый цветовой канал представляет значения для одного набора данных.
Например, мои данные представляют собой три различных изотопа, измеренных в породе, поэтому я хотел бы, чтобы R представлял значения для кислорода-16, G = серы-32 и B = магния-24.
Я выяснил, как нормализовать каждый массив изотопов к дискретизированному значению в диапазоне 0-255 с помощью следующего обобщенного уравнения:
new_arr = ((arr - arr.min()) * (1/(arr.max() - arr.min()) * 255).astype('uint8')
Более конкретно для моих данных у меня есть следующее:
O16R = ((O16.get_data() - np.min(O16.get_data())) * (1/(np.max(O16.get_data()) - np.min(O16.get_data())) * 255).astype('uint8'))
S32G = ((S32.get_data() - np.min(S32.get_data())) * (1/(np.max(S32.get_data()) - np.min(S32.get_data())) * 255).astype('uint8'))
Mg24B = ((Mg24.get_data() - np.min(Mg24.get_data())) * (1/(np.max(Mg24.get_data()) - np.min(Mg24.get_data())) * 255).astype('uint8'))
Теперь я хотел бы создать еще один трехмерный массив 64 x 64 x 50, каждый индекс в массиве которого определяется значениями RGB, соответствующими индексированным значениям, определенным выше.
Для упрощенного примера, если бы у меня были небольшие массивы 2 x 1:
O16R = (151, 3)
S32G = (2 , 57)
Mg24B = (0, 111)
Тогда мне нужна результирующая вложенная матрица RGB со значениями:
RGB = ( [151,2,0] , [3,57,111] )
Я считаю, что мне нужно создать цикл for, но я не смог понять это.Это то, что я имею до сих пор, но это не анализирует данные.
RGB = np.zeros(shape=(64,64,50))
for i in RGB:
RGB = ([O16R, S32G, Mg24B])
Любая помощь будет оценена.