在 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 中将数组与不同数据类型组合的便捷方法,从而提供数据操作的灵活性和效率。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3