gpt4 book ai didi

python - 防止 numpy 将数值向上转换为字符串

转载 作者:行者123 更新时间:2023-12-01 01:43:11 24 4
gpt4 key购买 nike

通常,我对 numpy 确定保存 np.array 中序列对象所需的最小类型的方式感到满意。 :

>>> print(np.array([42, 4.2]))
array([42, 4.2], dtype=float64)

这非常直观:我需要将整数向上转换为 float 才能处理数据。

但是,以下情况对我来说似乎不太直观:

>>> print(np.array([42, 4.2, 'aa']))
array(['42', '4.2', 'aa'], dtype='<U32')

我希望结果数组的类型为 np.object 。我不想打电话

np.array(ma_list, dtype=np.object)

因为我想在my_list=[42, 4.2]的情况下保留旧的行为以及 my_list=['aa'] 的情况(这将导致类型为 <U2 )。

是否可以调整默认行为以防止将数值向上转换为字符串,或者是否有任何具有相同效果的解决方法?

最佳答案

看起来您想在让 numpy 确定数据类型之前对数据进行一些预处理。根据我对你的标准的理解,如果列表中的所有对象都是数字,或者它们都不是数字,你想让 numpy 确定类型。如果类别是混合的,您需要使用np.object

幸运的是,Python 中的所有数字都有抽象基类 numbers.Number迷上:

from numbers import Number

isnum = lambda x: isinstance(x, Number)
isntnum = lambda x: not isinstance(x, Number)
if all(map(isnum, my_list)) or all(map(isntnum, my_list)):
dtype = None
else:
dtype = np.object

my_arr = np.array(my_list, dtype=dtype)

这里的措辞并不理想,但它应该有效,并为您提供一个更优雅和更高效的起点。

关于python - 防止 numpy 将数值向上转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51673388/

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