在 NumPy 中组合具有多种数据类型的数组
将包含不同数据类型的数组连接成一个数组,每列中都有相应的数据类型一个挑战。不幸的是,使用 np.concatenate() 的常见方法会将整个数组转换为字符串数据类型,从而导致内存效率低下。
要克服此限制,一个可行的解决方案是使用记录数组或结构化数组。
记录数组
记录数组允许通过属性访问各个数据字段。通过指定每个字段的数据类型,可以将多个数据类型组合在一个数组中:
<code class="python">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)</code>
输出:
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], dtype=[('keys', '|S1'), ('data', '<i8')])
结构化数组
结构化数组类似,提供定义每列数据类型的能力。但是,它们不支持像记录数组那样的属性访问:
<code class="python">arr = np.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')])) print(arr)</code>
输出:
array([('a', 0), ('b', 1)], dtype=[('keys', '|S1'), ('data', '<i8')])
在记录和结构化数组之间进行选择
记录数组和结构化数组之间的选择取决于各个用例。记录数组为属性访问提供了便利,而结构化数组可能更适合更复杂的数据结构。这两种方法都提供了一种在 NumPy 中组合具有不同数据类型的数组的便捷方法,从而提供了数据操作的灵活性和效率。
以上是如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?的详细内容。更多信息请关注PHP中文网其他相关文章!