gpt4 book ai didi

python - 在一个 NumPy 数组中存储不同的数据类型?

转载 作者:IT老高 更新时间:2023-10-28 21:38:02 29 4
gpt4 key购买 nike

我有两个不同的数组,一个是字符串,另一个是整数。我想将它们连接成一个数组,其中每一列都具有原始数据类型。我目前的解决方案(见下文)将整个数组转换为 dtype = string,这似乎非常低效。

combined_array = np.concatenate((A, B), axis = 1)

A.dtype = stringB.dtype = int 时,是否可以在 combined_array 中使用多种 dtype?

最佳答案

一种方法可能是使用 record array . “列”不会像标准 numpy 数组的列,但对于大多数用例来说,这就足够了:

>>> a = numpy.array(['a', 'b', 'c', 'd', 'e'])
>>> b = numpy.arange(5)
>>> records = numpy.rec.fromarrays((a, b), names=('keys', 'data'))
>>> records
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)],
dtype=[('keys', '|S1'), ('data', '<i8')])
>>> records['keys']
rec.array(['a', 'b', 'c', 'd', 'e'],
dtype='|S1')
>>> records['data']
array([0, 1, 2, 3, 4])

请注意,您也可以通过指定数组的数据类型来对标准数组执行类似的操作。这被称为“structured array”:

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

不同之处在于记录数组还允许对单个数据字段进行属性访问。标准结构化数组没有。

>>> records.keys
chararray(['a', 'b', 'c', 'd', 'e'],
dtype='|S1')
>>> arr.keys
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'keys'

关于python - 在一个 NumPy 数组中存储不同的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11309739/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com