首页  >  文章  >  后端开发  >  如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?

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

Susan Sarandon
Susan Sarandon原创
2024-10-21 17:59:18513浏览

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

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn