布尔表达式正在生成“ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()“

2024-10-02 18:21:07 发布

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

运行以下代码时,我得到错误消息 “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_andnp.logical_or,因为我没有使用numpy数组。你知道吗

有人知道为什么.any().all()不能解决这个问题吗?我能做些什么来解决这个问题?你知道吗

谢谢。你知道吗


Tags: 消息错误npanyrandomallwidthpatch
1条回答
网友
1楼 · 发布于 2024-10-02 18:21:07

我认为你的问题是absX有一堆数字,而x\u rand+width只有一个。x_rand<;=absX返回一个数组。应用np.全部(或任何)到该值,然后根据x∗rand+width进行测试,例如np.all(x_rand <= absX) < x_rand+width。你知道吗

相关问题 更多 >