python - Numpy:连接不同的数据类型,同时保留每个数据类型
问题描述
我有 3 个数组,我想沿轴 1 连接它们。它们的 dtype 是 np.float32、U32 和 np.float32。当我这样连接时:
np.concatenate((A,B,C), axis=1)
结果的 dtype 是“U32”。我想保留 A 列和 C 列的 float32 dtypes。我该怎么做?
解决方案
您可以使用结构化数组(或记录数组)来做到这一点。如果A
,B
和C
被定义为
import numpy as np
A = np.zeros(30, dtype=np.float32)
B = np.zeros(30, dtype=np.int32)
C = np.zeros(30, dtype=np.float32)
您可以创建一个记录数组
res = np.rec.fromarrays([A,B,C], names='a,b,c')
A、B 和 C 必须具有相同的形状,但它们可以具有您选择的任何数据类型。可以使用res.a
或访问子数组(或字段) res['a']
。大多数操作(mean
,max
等)不能对整个数组进行操作。您需要选择一个单独的字段,但索引和相关操作将适用于整个数组。一旦习惯使用结构化数组,它就是一个非常有用的对象。
推荐阅读
- javascript - 在数据范围内未找到日期
- django - Django geoip2 + Maxmind 在本地工作,但不在生产中?
- plot - Netlogo 如何制作有序直方图
- python - 如何仅将此网站 HTML 表的第一列和 href 链接刮到 pandas 数据框中?
- c# - 如何将自定义测试框架与 IDE 集成?
- python - 找到与给定数字的和最接近的一对元组
- docker - docker-compose 构建语言切换后不起作用
- python - 通过 3D 网格绘制抛物线的算法
- django - 如何通过外键从与另一个模型相关的模型中检索特定对象?
- kubernetes - 在 Kubernetes 上使用 nginx 入口注释进行多次重写?