”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?

如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?

发布于2024-11-07
浏览:614

How to Combine NumPy Arrays with Different Datatypes While Preserving Data Types?

在 NumPy 中组合具有多种数据类型的数组

将包含不同数据类型的数组连接成单个数组,每列中具有相应的数据类型一个挑战。不幸的是,使用 np.concatenate() 的常见方法会将整个数组转换为字符串数据类型,从而导致内存效率低下。

要克服此限制,一个可行的解决方案是使用记录数组或结构化数组。

记录数组

记录数组允许通过属性访问各个数据字段。通过指定每个字段的数据类型,可以将多个数据类型组合在一个数组中:

import numpy as np

a = np.array(['a', 'b', 'c', 'd', 'e'])
b = np.arange(5)
records = np.rec.fromarrays((a, b), names=('keys', 'data'))

print(records)

输出:

rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], 
      dtype=[('keys', '|S1'), ('data', '<i8')])

结构化数组

结构化数组是类似,提供定义每列数据类型的能力。但是,它们不支持像记录数组那样的属性访问:

arr = np.array([('a', 0), ('b', 1)], 
                      dtype=([('keys', '|S1'), ('data', 'i8')]))

print(arr)

输出:

array([('a', 0), ('b', 1)], 
      dtype=[('keys', '|S1'), ('data', '<i8')])

在记录数组和结构化数组之间进行选择

记录数组和结构化数组之间的选择取决于各个用例。记录数组为属性访问提供了便利,而结构化数组可能更适合更复杂的数据结构。这两种方法都提供了一种在 NumPy 中将数组与不同数据类型组合的便捷方法,从而提供数据操作的灵活性和效率。

版本声明 本文转载于:1729504697如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3