У меня есть массив numpy с dtype.names
как:
('s0', 's1', 's2', 's3')
Какие шаги я бы предпринял, чтобы вернуть массив numpy dtype
в np.float32?
Я получаю массив numy ('s0', 's1', 's2', 's3') из:
import pyopencl as cl
import pyopencl.array as cl_array
import numpy as np
from scipy.misc import imread, imsave
import math
import os
import PIL.Image
import cv2
os.environ['PYOPENCL_COMPILER_OUTPUT'] = '1'
#produces numpy array of the structures
# -> ('s0', 's1', 's2', 's3') and shape (image_width,image_height, image_depth).
def process_image(path_to_image, padding):
rgb_image = PIL.Image.open(path_to_image)
rgba_image = rgb_image.convert('RGBA')
im_src = np.array(rgba_image).astype(dtype=np.float32)
print(im_src.shape)
return im_src.astype(dtype=cl_array.vec.float4)
dtype=cl_array.vec.float4
связывает 4 np.float32
в (np.float32,np.float32,np.float32,np.float32)
image_depth
равно 4:
Я пробовал это:
vector_float4= process_image('image.jpg',0)
result = np.array(vector_float4.tolist())
result
имеет форму (width, height, 4, 4)
.Я ожидал (width, height, 4)
.
Я смотрю на этот ответ: Преобразование структурированного массива в обычный массив NumPy