连接具有不同数据类型的 NumPy 数组
创建单个 NumPy 数组来组合来自多个具有不同数据类型的数组的数据可能是一项挑战。一种常见的方法是使用 concatenate() 函数,但这可能会导致整个数组转换为单一数据类型,例如字符串。这在内存使用方面可能效率低下。
解决方案:记录数组
要在组合数组时保留原始数据类型,请考虑使用记录数组。记录数组允许您创建具有命名列的结构化数组,每个列都有自己的数据类型。这种方法使您能够通过名称访问各个列,就像 Python 对象的属性一样。
要创建记录数组,您可以使用 numpy 模块中的 rec.fromarrays() 函数:
<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'))</code>
此代码创建一个名为 Records 的记录数组,其中包含两列:具有字符串数据类型的“keys”和具有整数数据类型的“data”。
结构化数组
组合具有不同数据类型的数组的另一个选项是直接创建结构化数组。结构化数组类似于记录数组,但不提供对各个列的属性访问:
<code class="python">arr = np.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')]))</code>
此代码创建一个名为 arr 的结构化数组,其中包含两列:具有字符串数据类型的“keys”和“data” ' 具有整数数据类型。
哪种方法更好?
适合您的特定用例的最佳方法取决于您的要求。记录数组使用起来更方便,特别是当您需要按名称访问各个列时。如果不需要属性访问,结构化数组的内存使用效率会更高。
以上是在 NumPy 数组串联中保留数据类型:记录数组与结构化数组的详细内容。更多信息请关注PHP中文网其他相关文章!