Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x numpy-ndarray数据类型转换失败_Python 3.x_Numpy_Multidimensional Array_Writetofile_Dtype - Fatal编程技术网

Python 3.x numpy-ndarray数据类型转换失败

Python 3.x numpy-ndarray数据类型转换失败,python-3.x,numpy,multidimensional-array,writetofile,dtype,Python 3.x,Numpy,Multidimensional Array,Writetofile,Dtype,我有一段代码进行了一些ndarray转换,我想将最终输出转换为np.int8类型,并将其输出到文件。然而,这种转换没有起作用。下面是一段代码: print("origin dtype:", image[0].dtype) print(type(image[0])) image[0] = image[0].astype(np.uint8) print(image[0]) print("image datatype1:",image[0].dtype) ima

我有一段代码进行了一些ndarray转换,我想将最终输出转换为np.int8类型,并将其输出到文件。然而,这种转换没有起作用。下面是一段代码:

print("origin dtype:", image[0].dtype)
print(type(image[0]))
image[0] = image[0].astype(np.uint8)
print(image[0])
print("image datatype1:",image[0].dtype)
image[0].tofile(f'{image_name}_{org_h}_{org_w}_{dst_h}_{dst_w}.bin')
print("image datatype2:",image[0].dtype)
以下是我得到的:

origin dtype: float32
<class 'numpy.ndarray'>
[[[ 71.  73.  73. ... 167. 170. 173.]
  [ 62.  63.  64. ... 164. 168. 170.]
  [ 54.  56.  57. ... 157. 163. 165.]
  ...
 [142. 154. 138. ... 115.  91. 111.]
  [158. 127. 123. ... 128. 130. 113.]
  [133. 114. 106. ... 114. 110. 106.]]]
image datatype1: float32
image datatype2: float32
原始数据类型:float32
[[[ 71.  73.  73. ... 167. 170. 173.]
[ 62.  63.  64. ... 164. 168. 170.]
[ 54.  56.  57. ... 157. 163. 165.]
...
[142. 154. 138. ... 115.  91. 111.]
[158. 127. 123. ... 128. 130. 113.]
[133. 114. 106. ... 114. 110. 106.]]]
图像数据类型1:32
图像数据类型2:32

有人能告诉我哪里出错了吗?

二维数组的行不能有不同的数据类型:当您将
uint8
数组分配给
float32
数组的行时,它被强制转换为
float32
;例如:

image=np.one((4,4),dtype='float32')
打印(图像[0]。数据类型)
#浮动32
图像[0]=图像[0]。aType('uint8')
打印(图像[0]。数据类型)
#浮动32
您可以选择一次转换整个阵列的数据类型:

image=image.astype('uint8')
打印(图像[0]。数据类型)
#uint8
或者将二维数组转换为一维数组列表,每个数组都可以有自己的数据类型:

image = list(image)
print(image[0].dtype)
# float32

image[0] = image[0].astype('uint8')
print(image[0].dtype)
# uint8

什么是
图像