首页 > 解决方案 > Numpy:连接不同的数据类型,同时保留每个数据类型

问题描述

我有 3 个数组,我想沿轴 1 连接它们。它们的 dtype 是 np.float32、U32 和 np.float32。当我这样连接时:

np.concatenate((A,B,C), axis=1)

结果的 dtype 是“U32”。我想保留 A 列和 C 列的 float32 dtypes。我该怎么做?

标签: pythonnumpynumpy-ndarray

解决方案


您可以使用结构化数组(或记录数组)来做到这一点。如果A,BC被定义为

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等)不能对整个数组进行操作。您需要选择一个单独的字段,但索引和相关操作将适用于整个数组。一旦习惯使用结构化数组,它就是一个非常有用的对象。


推荐阅读