要定义结构化数组,我们可以使用元组参数。例如:
>>> x = np.zeros(3, dtype=('i4',[('r','u1'), ('g','u1'), ('b','u1'), ('a','u1')]))
>>> x
array([0, 0, 0])
>>> x['r']
array([0, 0, 0], dtype=uint8)
我不明白,为什么是 x array([0,0,0])
?为什么 x['r'] 也是array([0,0,0])
?
要定义结构化数组,我们可以使用元组参数。例如:
>>> x = np.zeros(3, dtype=('i4',[('r','u1'), ('g','u1'), ('b','u1'), ('a','u1')]))
>>> x
array([0, 0, 0])
>>> x['r']
array([0, 0, 0], dtype=uint8)
我不明白,为什么是 x array([0,0,0])
?为什么 x['r'] 也是array([0,0,0])
?
此示例似乎是从文档页面的(base_dtype, new_dtype)
段落中复制的。https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.htmldtypes
32-bit integer, containing fields r, g, b, a that interpret the 4 bytes in the integer as four unsigned integers:
>>>>>> dt = np.dtype(('i4', [('r','u1'),('g','u1'),('b','u1'),('a','u1')]))
它正在创建一个罕见的双重映射。每个元素都可以看作是一个 4 字节的 int,或者是一个 4 字段的记录。