将两个(或更多)数组分别与循环中的一个因子相乘-返回两个单独的数组



我正在尝试用一个常数因子乘两个不同的数组。例如,我有两个以bar为单位的压力测量数组,并希望通过将每一行乘以因子1e5将每个数组分别转换为Pa。返回值也应该是两个数组。我考虑过for循环,但我是Python的新手,我不知道如何处理它。

# for example
import numpy as np
p1=np.array([2,3,4]) # pressure measurement p1 in bar
p2=np.array([8,7,6]) # pressure measurement p2 in bar
# loop to multiply p1 and p2 seperately with 1e5
# return 
# p1[2e5,3e5,4e5]
# p2[8e5,7e5,6e5]       

有人能帮忙吗?

非常感谢!

乔纳斯

NumPy数组支持标量乘法(这是广播的特殊情况)。直接将数组乘以常数:p1 *= 1e5

如果你得到一个UFuncTypeError,这意味着你的数组数据类型不匹配常数乘法器的类型。例如,a = np.array([1,2,3])将创建一个默认为int32数据类型的数组,NumPy强制转换规则不允许它乘以浮点数。要解决这个问题,您可以显式指定数据类型:a = np.array([1,2,3], dtype=float),或者您可以将条目作为浮点数:a = np.array([1.0,2.0,3.0])

使用numpy.multiplyfor this

x = np.array([2,3,4])
y = np.multiply(x, 1e5)
print(y)

输出:

[200000. 300000. 400000.]

x在进程中没有改变

def multiply_two_arrays(a1, a2, factor):
return a1*factor, a2*factor
a1, a2 = multiply_two_arrays(p1, p2, 10)

最新更新