我原本期望以下方法从现有数组的形状创建一个新的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
我错过了什么?
谢谢, 格特
答案 0 :(得分:1)
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名称;几乎所有其他dtypes
都是numpy
特定的,并且需要np.
命名空间或字符串名称(numpy
理解)。
错误NameError: name 'uint16' is not defined
表示uint16
不是主命名空间中的变量。换句话说,它不是内置变量(或函数),并且它没有被导入。它是导入numpy
的{{1}}命名空间的一部分。
e.g。
np