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