一个如何分配给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数组?
欢迎任何提示。
答案 0 :(得分:2)
您正在正确执行分配。您搞砸的部分是 dtypes 。 NumPy字符串dtypes是固定大小的,如果尝试使用"str"
作为dtype,则将其视为 size 0 -空字符串是唯一可能的值!您的"A"
被截断为0个字符以适合。
指定大小-例如,'S10'
是10个字节的字节字符串,或者'U10'
是10个代码点的unicode字符串-或使用object
存储普通的Python字符串对象,并避免长度限制和将'\0'
视为空终止符。