合并NumPy数组时int转decimal问题及同类型合并方法求助
解决numpy合并数组时类型自动转为浮点的问题
问题核心原因:初始的a是空列表,np.concatenate会自动将其转换为numpy数组,而空数组默认dtype为float64。当与int64类型的b合并时,numpy会进行类型提升,最终得到浮点型数组。
以下是三种可行的解决方案:
提前指定a的类型为int64
初始化a时直接创建空的int64类型数组,而非空列表:import numpy as np a = np.array([], dtype=np.int64) b = np.array([76522, 82096], dtype=np.int64) a = np.concatenate((a, b)) # 输出结果:array([76522, 82096], dtype=int64)合并前将a转为与b同类型的数组
如果a必须以列表形式存在,合并前先转换为和b一致的数据类型:import numpy as np a = [] b = np.array([76522, 82096], dtype=np.int64) a = np.concatenate((np.array(a, dtype=b.dtype), b)) # 输出结果:array([76522, 82096], dtype=int64)在concatenate时强制指定dtype
直接在合并时通过dtype参数指定结果类型,强制覆盖类型提升逻辑:import numpy as np a = [] b = np.array([76522, 82096], dtype=np.int64) a = np.concatenate((a, b), dtype=np.int64) # 输出结果:array([76522, 82096], dtype=int64)
内容的提问来源于stack exchange,提问作者asmgx
相关产品推荐
相关产品推荐

