【发布时间】:2021-12-21 07:29:58
【问题描述】:
问题:
我有一个有两个数组的函数,但是如果输入数据和结果在一定的范围内,返回的值是一个常量:
def funcB(A, C1, C2):
B = (0.381*A) + (0.05*(C1/C2)) - 0.15
B[B > 1.0] = 1.0
B[B < 0.5] = 0.5
return B
上面B是结果,>1.0就是1,
我正在努力做的是添加一个条件,如果输入 A 3.3 结果 B 是 1.0
【问题讨论】:
-
您可以使用
numpy.where查找A满足某些条件的索引。由于A和B具有相同的形状,使用这些索引(掩码)您可以设置B的值。 -
你可以像上面那样做。
B[A < 1.64] = 0.5,假设 A 和 B 的形状相同,并且没有广播恶作剧。 -
@Reti43 从定义
B的方式来看,很明显A可以广播到B,所以这应该可以正常工作。 -
@SvenMarnach 如果
C1和C2是常量,那当然。但以下不起作用。A = np.ones((5,)); C1 = C2 = np.ones((3, 1)); B = A + C1 / C2; B[A < 0.5]