Beim Ausführen des folgenden Codes erhalte ich die Fehlermeldung „Valueerror: der Wahrheitswert eines Arrays mit mehr als einem Element ist mehrdeutig Verwenden a.any() oder a.All().“Boolescher Ausdruck erzeugt einen "ValueError: Der Wahrheitswert eines Arrays mit mehr als einem Element ist mehrdeutig. Verwenden Sie a.any() oder a.all()"
import random
import numpy as np
nx, ny = (32, 32)
xaxis = np.linspace(-310, 310, nx)
yaxis = np.linspace(-310, 310, ny)
xys = np.dstack(np.meshgrid(xaxis, yaxis)).reshape(-1, 2)
oris = random.randint (0, 180)
random_ori=oris
absX = abs(xys[:,0])
absY = abs(xys[:,1])
x_rand=(random.randint (0, 220))
y_rand=(random.randint (0, 220))
width=40
height=80
patch = (x_rand <= absX < x_rand + width) * (y_rand <= absY < y_rand + height)
oris[patch] = random_ori + 30
Das Problem scheint aufgrund der boolesche Ausdruck zu sein:
patch = (x_rand <= absX < x_rand + width) * (y_rand <= absY < y_rand + height)
Wie die Fehlermeldung suggeriert, habe ich versucht mit .any()
und .all()
, aber die gleiche Fehlermeldung erscheint.
Ich kann np.logical_and
oder np.logical_or
entweder nicht verwenden, da ich nicht mit einem numpy Array arbeite.
Würde jemand wissen, warum .any()
und .all()
das Problem nicht beheben, und was kann ich tun, um es zu beheben?
Danke.
Danke für das @ BrittUWaterloo, aber die Ausgabe ist nur ein einziger boolescher Wert, wenn ich das benutze. Was ich brauche, sind wahre Werte für absX und absY, die den Kriterien entsprechen und für den Rest falsch sind. Als Ergebnis sollte ich mehrere falsche und wahre Werte für alle 1024 Elemente erhalten. [Ich brauche diese Mehrfache falsch/wahr, damit ich später die Ausrichtung der Elemente festlegen kann, die zu den Patch-Kriterien passen. –
Wenn Sie nur die Werte wollen, versuchen Sie ein Listenverständnis wie '[x für x in absX, wenn x> = x_rand und x
brittAnderson