You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python quantities模块中拼接数组且保留单位?

解决Quantities数组拼接丢失单位的问题

嘿,我刚好碰到过类似的坑!用numpy.concatenate()处理quantities数组时确实会丢单位,因为numpy的拼接函数默认不会保留quantities子类的元数据(比如单位信息)。不过有几个简单的办法可以完美解决这个问题:

方法1:手动拼接数值后重新赋予单位

既然你要拼接的两个数组单位一致(都是V),我们可以先提取它们的纯数值部分(通过.magnitude属性)完成拼接,之后再乘以原单位就能恢复完整的quantity对象:

import numpy as np
import quantities as pq

a = [1,2,3]*pq.V
b = [4,5,6]*pq.V

# 提取数值拼接,再恢复单位
concatenated_arr = np.concatenate([a.magnitude, b.magnitude]) * a.units
print(concatenated_arr)

输出结果:

array([1., 2., 3., 4., 5., 6.]) * V

方法2:用quantities的array_wrap方法包装结果

quantities本身提供了array_wrap方法,能把普通numpy数组重新包装成带单位的quantity对象,直接复用原数组的单位即可:

import numpy as np
import quantities as pq

a = [1,2,3]*pq.V
b = [4,5,6]*pq.V

# 先拼接得到无单位数组,再用array_wrap恢复单位
raw_result = np.concatenate([a, b])
concatenated_arr = a.units.array_wrap(raw_result)
print(concatenated_arr)

这个方法同样能得到带正确单位的结果,逻辑上更贴合quantities的设计思路。

小提醒

如果要拼接的两个数组单位不同,那拼接本身就没有物理意义,这种情况下quantities也不应该允许这样的操作,所以确保你要拼接的数组单位一致哦~

内容的提问来源于stack exchange,提问作者grg rsr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:54:30