Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 使用修改的元素数据类型创建新的numpy数组_Python_Arrays_Numpy - Fatal编程技术网

Python 使用修改的元素数据类型创建新的numpy数组

Python 使用修改的元素数据类型创建新的numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我原以为下面的代码将从现有数组的形状创建一个新的numpy数组,但使用修改的元素数据类型。我的原始阵列是一个8位RGB像素的图像。我想使用相同的形状创建一个新数组,但使用uint16数据类型。其目的是将图像转换为16位像素并执行一些数学运算。令我惊讶的是,下面的方法不起作用 >>> import scipy.misc as msc >>> import numpy as np >>> img_rgb =

我原以为下面的代码将从现有数组的形状创建一个新的numpy数组,但使用修改的元素数据类型。我的原始阵列是一个8位RGB像素的图像。我想使用相同的形状创建一个新数组,但使用uint16数据类型。其目的是将图像转换为16位像素并执行一些数学运算。令我惊讶的是,下面的方法不起作用

>>> import scipy.misc        as msc
>>> import numpy             as np
>>> img_rgb = msc.imread('Jupiter_20160417_53.png')
>>> img_rgb.dtype
dtype('uint8')
>>> img_rgb.shape
(480, 640, 3)
>>> new= np.zeros(img_rgb.shape,dtype=uint16)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'uint16' is not defined
>将scipy.misc作为msc导入
>>>将numpy作为np导入
>>>img_rgb=msc.imread('Jupiter_20160417_53.png')
>>>img_rgb.d类型
数据类型('uint8')
>>>img_rgb.shape
(480, 640, 3)
>>>new=np.zero(img_rgb.shape,dtype=uint16)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“uint16”
我错过了什么

谢谢, 格特

这个
np.

In [2]: np.zeros((3,4),dtype=np.uint16)
Out[2]: 
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=uint16)
'uint16'
(字符串)也可以工作

int
float
是Python名称;几乎所有其他
dtype
都是
numpy
特定的,并且需要
np.
名称空间或字符串名(后者
numpy
可以理解)

错误
name错误:未定义名称“uint16”
表示
uint16
不是主命名空间中的变量。换句话说,它不是一个内置变量(或函数),也没有被导入。它是导入了
np
numpy
命名空间的一部分

e、 g


>>>a=np.zeros((3,3),dtype=np.uint16)适合我(当然将numpy作为np导入)谢谢你。“np.”前缀起作用了。更好的代码样式是什么?np.zeros((3,4),dtype='uint16')或np.zeros((3,4),dtype=np.uint16)?我认为这无关紧要。这里有更多细节:我想知道为什么它对我不起作用,np.uint8起作用,但是在np.uint16上,CV抛出了一个异常,在cvShowImage中断言失败
In [8]: z
...
NameError: name 'z' is not defined