gpt4 book ai didi

python - 屏蔽python 2d数组以在特定阈值下更改圆圈中的值

转载 作者:行者123 更新时间:2023-12-04 14:46:57 24 4
gpt4 key购买 nike

正如标题所说,如果满足特定条件,我会尝试更改二维数组中圆的值。到目前为止,我是从 different question 得到的。在这:

import numpy as np

x = np.arange(0, 20)
y = np.arange(0, 20)
arr = np.zeros((y.size, x.size))

cx = 10.
cy = 10.
r = 4.

mask = (x[np.newaxis, :] - cx) ** 2 + (y[:, np.newaxis] - cy) ** 2 < r ** 2
arr[mask] = 1
cxcy是圆心的坐标, r是它的半径。 mask包含圆圈,并且其中的所有元素都设置为 1,这很好用。我想要做的是仅当它们小于 5 或​​任何类似条件时才更改它们的值。显然这个数组只有 0,但我的真实数据会预先设置其他值)。

最佳答案

掩码是 boolean 值,您可以使用按位运算或逻辑运算将它们与其他掩码组合在一起:

circle_mask = (x[np.newaxis, :] - cx) ** 2 + (y[:, np.newaxis] - cy) ** 2 < r ** 2
less_than_5_mask = arr < 5

arr[circle_mask & less_than_5_mask] = 1
在这种情况下, &是按位、逐元素 boolean AND 运算符。如果您想替换圆圈内和/或小于 5 的位置,您可以使用 |运营商代替。 &是更快的等效于 np.bitwise_and在这种情况下。由于您的数组是 boolean 值,您可以使用 np.logical_and达到同样的效果。请注意,这与使用 and 不同。运算符,因为运算符会尝试将整个数组提取为单个 boolean 值,从而导致错误。

关于python - 屏蔽python 2d数组以在特定阈值下更改圆圈中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69842877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com