我想做一个函数,根据输入计算一些东西。我已经尝试过这样做,如果没有给出输入,那么它在默认情况下被设置为0
。我要么提供a
和d
,要么提供b
和c
,但不提供交叉
import numpy as np
data_t = np.random.uniform(2.25, 2.75, size=10)
data_a = np.random.uniform(9.5, 10.5, size=(20,10)); data_a = list(data_a)
data_b = np.random.uniform(6.5, 7.5, size=(20,10)); data_b = list(data_b)
data_c = np.random.uniform(14.5, 15.5, size=(20,10)); data_c = list(data_c)
data_d = np.random.uniform(18.5, 19.5, size=(20,10)); data_d = list(data_d)
def TEST(t, a=0, b=0, c=0, d=0):
t = np.array(t)
if a and d == 0:
m, n = np.array(a.shape)
x1 = np.array([[b[jx, ix] + t[jx] for ix, i in enumerate(range(n))] for jx, _ in enumerate(range(m))])
y1 = np.array([[c[jx, ix] + t[jx] for ix, i in enumerate(range(n))] for jx, _ in enumerate(range(m))])
elif b and c == 0:
m, n = np.array(a.shape)
x2 = np.array([[a[jx, ix] - t[jx] for ix, i in enumerate(range(n))] for jx, _ in enumerate(range(m))])
y2 = np.array([[d[jx, ix] - t[jx] for ix, i in enumerate(range(n))] for jx, _ in enumerate(range(m))])
else:
raise ValueError('Something is wrong.')
test = TEST(t=data_t, a=data_a, b=0, c=0, d=data_d)
很明显,我做了一些与Python
如何解释if
和and
相结合的错误的事情,但我不知道怎样做才是正确的方法。我最终得到了我创建的ValueError
谢谢你,克里斯·道尔,让我明白了。正如他在上面的评论中所说,我应该将条件设置为
if a == 0 and d == 0
。我还通过以下方式改进了其余部分:现在一切都很好,这都要感谢@Chris Doyle。再次感谢你
相关问题 更多 >
编程相关推荐