运行以下代码时,我得到错误消息 “ValueError:包含多个元素的数组的真值不明确。使用a.any()或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
问题似乎是由布尔表达式引起的:
patch = (x_rand <= absX < x_rand + width) * (y_rand <= absY < y_rand + height)
如错误消息所示,我尝试使用.any()
和.all()
,但是出现了相同的错误消息。你知道吗
我不能使用np.logical_and
或np.logical_or
,因为我没有使用numpy数组。你知道吗
有人知道为什么.any()
和.all()
不能解决这个问题吗?我能做些什么来解决这个问题?你知道吗
谢谢。你知道吗
我认为你的问题是absX有一堆数字,而x\u rand+width只有一个。x_rand<;=absX返回一个数组。应用np.全部(或任何)到该值,然后根据x∗rand+width进行测试,例如
np.all(x_rand <= absX) < x_rand+width
。你知道吗相关问题 更多 >
编程相关推荐