使用已修改的元素数据类型

时间:2016-06-12 05:55:04

标签: python arrays numpy

我原本期望以下方法从现有数组的形状创建一个新的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

我错过了什么?

谢谢, 格特

1 个答案:

答案 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'(字符串)也可以。

intfloat是Python名称;几乎所有其他dtypes都是numpy特定的,并且需要np.命名空间或字符串名称(numpy理解)。

错误NameError: name 'uint16' is not defined表示uint16不是主命名空间中的变量。换句话说,它不是内置变量(或函数),并且它没有被导入。它是导入numpy的{​​{1}}命名空间的一部分。

e.g。

np