【发布时间】:2018-08-28 17:10:28
【问题描述】:
我有以下 sn-p 可以正常工作。
P=im1.copy()
for i in range(P.shape[0]):
for j in range(P.shape[1]):
if (n_dens.data[i][j]==-5000 or T_k.data[i][j]==-5000):
P.data[i][j]=-5000
else :
P.data[i][j]=n_dens.data[i][j]*T_k.data[i][j]
P 是一个二维数组。
我想知道如何将其精简为以下几行:
P.data=n_dens.data*T_k.data
P.data=[foo-2.5005*10**7 if n_dens.data==-5000 or T_k.data==-5000 else foo for foo in P.data]
对于我上面的试验,我收到以下错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
如何纠正错误?或者有其他方法可以减少它吗?
【问题讨论】:
-
我认为您的意思是让
else:下方的行再缩进一级(因为您的代码目前的状态,它会引发IndentationError)。 -
无论您选择什么,请记住可读代码比单行代码更重要
-
对改进工作代码的建议通常不是 StackOverflow 的重点,因为我们试图成为特定、狭窄问题的答案的存储库,以避免可能是主观意见问题的问题——我们的姊妹网站Code Review 通常更合适,尽管那里的规则有很大不同。请参阅 A Guide to Code Review For Stack Overflow Users 以获取有关哪些问题在哪里适合,以及如何调整它们以使其符合每个站点的规则的指导。