ValueError:具有多个元素的数组的真值不明确。使用.any()或a.all()python

2024-10-03 06:19:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我被要求使用网格(100100)和np.meshgrid公司以及np角当python数组的最后一个值是一个模糊的时候,python说的是一个模糊的值,而我只想用一个布尔值来表示这个值。使用a.any()或a.all()。在

from PIL import Image
import numpy as np

XX = np.arange(0,101)
YY = np.arange(0,101) 
x, y = np.meshgrid(XX, YY)

x = x-50
y = y-50

z = x+ y*-1j

print z    

a = np.angle(z,deg=True)

grid = (a>=0 and a<20) or (a>=40 and a<60) or (a>=80 and a<100) or (a>=120 and a<140) or++ (a<=-20 and a>-40) or (a<=-60 and a>-80) or (a<=-100 and a>-120) or (a<=-140 and a>-160)


grid = grid.astype('uint8') * 255
new_img = Image.fromarray(grid ,'L') 
new_img.save("grid .bmp")

Tags: orandimageimport网格imgnewnp
2条回答

几个问题:

1)当给我们一个错误消息时,你应该指出它所指的代码行。在

2)这是SO问题(与Python和numpy相关)中最常见的错误消息之一。在

我猜错误发生在:

grid = (a>=0 and a<20) or (a>=40 and a<60) or (a>=80 and a<100) or (a>=120 and a<140) or++ (a<=-20 and a>-40) or (a<=-60 and a>-80) or (a<=-100 and a>-120) or (a<=-140 and a>-160)

有两个原因

1)使用and/or代替&/|

2)相对于&/|的>=类运算符的优先级。把()放在前者的周围。在


^{pr2}$

所以正确的表达方式是

((a>=0) & (a<20)) | ((a>=40) & (a<60)) | ((a>=80) & (a<100)) ...

分别尝试&|或{}和{},分别为and和{}。在

“and”和“or”比较整个对象的整体真实性,但您需要元素wise and的模拟。还有一些numpy函数logical_and和{}更显式。在

相关问题 更多 >