分配给numpy结构化数组

时间:2018-09-19 01:55:36

标签: python numpy

一个如何分配给numpy结构化数组?

import numpy as np

baz_dtype = np.dtype([("baz1", "str"),
                      ("baz2", "uint16"),
                      ("baz3", np.float32)])
dtype = np.dtype([("foo", "str"),
                  ("bar", "uint16"),
                  ("baz", baz_dtype)])
xx = np.zeros(2, dtype=dtype)
xx["foo"][0] = "A"

这里xx保持不变。 https://docs.scipy.org/doc/numpy/user/basics.rec.html文档对此有些含糊。

有关说明,是否可以使一个或多个子类型成为指定dtype的列表或numpy数组?

欢迎任何提示。

1 个答案:

答案 0 :(得分:2)

您正在正确执行分配。您搞砸的部分是 dtypes 。 NumPy字符串dtypes是固定大小的,如果尝试使用"str"作为dtype,则将其视为 size 0 -空字符串是唯一可能的值!您的"A"被截断为0个字符以适合。

指定大小-例如,'S10'是10个字节的字节字符串,或者'U10'是10个代码点的unicode字符串-或使用object存储普通的Python字符串对象,并避免长度限制和将'\0'视为空终止符。