gpt4 book ai didi

python - 将数组的一小部分旋转 90 度

转载 作者:太空狗 更新时间:2023-10-30 02:33:55 24 4
gpt4 key购买 nike

我想旋转一个数组,但不是整个数组,只是其中的一小部分。

我有 512X512 阵列(基本上它是一个中心为 (150,150)、半径为 200 的高斯圆)。现在我只想将数组的一小部分(以 (150,150) 为中心,半径为 100)旋转 90 度。最初我使用了 numpy rot90 模块,但它旋转了我不想要的每个数组元素。

最佳答案

如果您可以使用 advanced indexing 描述您想要旋转的元素,那么您应该能够使用类似以下的内容执行旋转(假设您的数组称为 arr):

arr[rs:re,cs:ce] = np.rot90(np.copy(arr[rs:re,cs:ce]))

这里的rsrecsce分别表示行首和行尾切片的开始和切片的列结束。

下面是一个示例,说明为什么需要调用 np.copy(至少在 numpy 1.3.0 中):

>>> import numpy as np
>>> m = np.array([[i]*4 for i in range(4)])
>>> m
array([[0, 0, 0, 0],
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3]])
>>> m[1:3,1:3] = np.rot90(m[1:3,1:3]) # rotate middle 2x2
>>> m
array([[0, 0, 0, 0],
[1, 1, 2, 1], # got 1, 2 expected 1, 2
[2, 1, 1, 2], # 1, 1 1, 2
[3, 3, 3, 3]])

关于python - 将数组的一小部分旋转 90 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11086557/

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