我有一个数字阵列称为p2De。第一行有多个元素可能大于1。我想设置小于1比1的元素。下面是我的代码,但显示错误。。。为什么?如何修复?在
bounde=1
p2De[:0]=map(lambda x:bounde if (x < bounde),p2Di[:0])
File "C:\Users\wange\workspace\cathode\src\diffusion.py", line 86
p2De[:0]=map(lambda x:bounde if (x < bounde),p2Di[:0])
^
SyntaxError: invalid syntax
正如其他人所指出的,语法问题在于
lambda
。在我不认为你想要
p2De[:0]
-那是一个空数组。p2De[0]
是第一行。p2De[0,:]
是相同的,它向人类读者清楚地表明您选择了2d数组的第一行。在使用map或comprehension是可行的,但是它们没有提供比简单循环(因为您不需要替换所有值)的太多优势(如果有的话):
但是这些迭代都不是好的
^{pr2}$numpy
实践。你应该试着用向量运算来思考。通常的做法是使用布尔掩码(或索引)来选择应更改的值:还有一个
numpy
函数,它应用如下限制,np.maximum
:np.clip
同时应用最小和最大边界:Python(3)的老板们鼓励我们在地图和lambda上使用函数和理解。例如,如果
plist
是与您的p2De[0,:]
行类似的列表:应该是的
您还可以使用列表理解,它更具可读性。另外,我将使用
^{pr2}$max
内置函数来代替lambda:您需要为您的
lambda
函数指定else
:相关问题 更多 >
编程相关推荐