请原谅我的无知,但我对用python编写代码非常陌生。我有一个非常简单的函数;它只需要根据b相对于a和c的相对位置进行计算:
a = 6
b = 3
c = 2
def function(a, b, c):
if ((a >= b) & (b >= c)):
return b - c
elif ((a <= b) & (b >= c)):
return a - c
else:
return 0
t = function(a, b, c)
print(t)
当我像上面这样用简单的数字运行它时,无论我得到什么b,它都会给出正确的答案。(在本例中为1)
但是,当我使用a、b和c作为Numpy数组运行它时,它只返回整个“t”数组中的b-c。
它没有太大不同,但以下是我在数组版本中使用的内容:
def function(a, b, c):
if ((a >= b) & (b >= c)).any():
return b - c
elif ((a <= b) & (b >= c)).any():
return a - c
else:
return 0
t = function(a, b, c[i>1])
print(t)
(存在[i>1]是因为数组输入量是可变的,当[i=0]时会使用另一个函数)
我也尝试过这个:t=np.where(prev2>=head_elv)&(head_elv>=Bottom_ELV)).any,head_ELV-Bottom_ELV,0),但运行了相同的结果。
While循环会工作得更好吗?
1条答案
按热度按时间yzuktlbb1#
我不认为在这里需要循环,因为这个问题可以使用数组操作来解决。假设数组的长度相同,您可以尝试下面的方法。