如何连接不同数据类型的数组并保持内存效率?

Barbara Streisand
发布: 2024-10-21 17:56:03
原创
602 人浏览过

How to Concatenate Arrays with Different Datatypes and Maintain Memory Efficiency?

连接具有多种数据类型的数组

在处理不同类型的数据时,通常需要将它们组合成一个数组。无需将整个数组转换为单一数据类型即可高效完成此操作。

考虑以下场景:您有两个数组,A 包含字符串,B 包含整数。目标是创建一个组合数组combined_array,其中每列保留其原始数据类型。

使用 np.concatenate 连接 A 和 B 时,会出现combined_array = np.concatenate((A, B), axis = 1)简单来说,它默认将整个数组转换为 dtype=string,导致内存效率低下。

解决方案:记录数组和结构化数组

有效的方法是利用记录数组或结构化数组。

记录数组:

记录数组提供了一种在单个数组中存储多种数据类型的灵活方法。可以通过属性访问各个字段:

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')])
print(records['keys'])
# rec.array(['a', 'b', 'c', 'd', 'e'], 
#   dtype='|S1')
print(records['data'])
# array([0, 1, 2, 3, 4])
登录后复制

结构化数组:

与记录数组类似,结构化数组允许为每个字段指定数据类型:

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

print(arr)
# array([('a', 0), ('b', 1)], 
#   dtype=[('keys', '|S1'), ('data', '<i8')])
登录后复制

请注意,记录数组提供属性访问,而结构化数组则不提供。

以上是如何连接不同数据类型的数组并保持内存效率?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!