首页 > 解决方案 > 分配给 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 数组?

欢迎任何提示。

标签: pythonnumpy

解决方案


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

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


推荐阅读