gpt4 book ai didi

python - 二维 numpy 数组的条件数学运算检查一维并在差异维度上执行不同的操作

转载 作者:行者123 更新时间:2023-11-28 21:51:17 25 4
gpt4 key购买 nike

我有一个 2D numpy 数组,其中第 0 列是设备的平移旋转,第 1 列是倾斜旋转。每一行都是不同的夹具。我想在每一行上运行以下逻辑:

if(pantilt[0] > 90):
pantilt[0] -=180
pantilt[1] *= -1
elif pantilt[0] < -90:
pantilt[0] += 180
pantilt[1] *= -1

我了解 1D 上的基本条件运算,例如 myarray[condition] = something。但我无法将其外推到更多维度。

最佳答案

我会计算掩码或 bool 索引,并对每一列使用 if:

构造一个示例数组:

pantilt=np.column_stack([np.linspace(-180,180,11),np.linspace(0,90,11)])

I = pantilt[:,0]>90
# J = pantilt[:,0]<-90
pantilt[I,0] -= 180
pantilt[I,1] *= -1

I = pantilt[:,0]<-90 # could use J instead
pantilt[I,0] += 180
pantilt[I,1] *= -1

之前:

array([[-180.,    0.],
[-144., 9.],
[-108., 18.],
[ -72., 27.],
[ -36., 36.],
[ 0., 45.],
[ 36., 54.],
[ 72., 63.],
[ 108., 72.],
[ 144., 81.],
[ 180., 90.]])

之后:

array([[  0.,  -0.],
[ 36., -9.],
[ 72., -18.],
[-72., 27.],
[-36., 36.],
[ 0., 45.],
[ 36., 54.],
[ 72., 63.],
[-72., -72.],
[-36., -81.],
[ 0., -90.]])

如果列是单独的一维数组,这同样有效。

关于python - 二维 numpy 数组的条件数学运算检查一维并在差异维度上执行不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564229/

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