gpt4 book ai didi

python - python(numpy)中的自动数组演算

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:45 25 4
gpt4 key购买 nike

我有一个依赖于多个变量的函数,比方说 y=f(x1,x2,x3,x4)。如果每个变量都是一个简单的数字,那么结果应该是一个普通数字。如果其中一个变量是一个数组,我需要结果也是一个数组。依此类推:如果其中两个变量是数组,我需要结果是一个二维数组。等等

例子:

def f(x1,x2,x3,x4):
y=x1*x2/(x3+x4)
return y

x1=1.0
x2=2.0
x3=3.0
x4=4.0
f(x1,x2,x3,x4)
# should give 2.0/7.0 = 0.2857...

x3=array([1.0,2.0,3.0,4.0,5.0])
f(x1,x2,x3,x4)
# should give a one-dimensional array with shape (5,)

x4=array([10.0,20.0,30.0,40.0,50.0,60.0,70.0])
f(x1,x2,x3,x4)
# should give a two-dimensional array with shape (5,7)

怎么做? (为了让我的程序的非 Python 读者尽可能清楚?)

最佳答案

执行此操作的正确方法是传递正确形状的数据。如果你想要一个二维结果,你应该传入二维数组。这可以通过 np.newaxis 来完成。

import numpy as np

def f(x1,x2,x3,x4):
y = x1*x2/(x3+x4)
return y

x1 = 1.0
x2 = 2.0
x3 = 3.0
x4 = 4.0
print f(x1,x2,x3,x4)

x3 = np.array([1.0,2.0,3.0,4.0,5.0])
print f(x1,x2,x3,x4)

x3 = x3[:, np.newaxis]
x4 = np.array([10.0,20.0,30.0,40.0,50.0,60.0,70.0])
x4 = x4[np.newaxis, :]
print f(x1,x2,x3,x4)

当然,您提出问题的方式有点模棱两可,为什么您应该期望获得形状为 (5, 7) 的数组而不是形状为 (7, 5 )

关于python - python(numpy)中的自动数组演算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20710409/

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