gpt4 book ai didi

python - 在具有 3 个参数的 3D numpy 数组上使用 rot90 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:34 25 4
gpt4 key购买 nike

Python 2.7.10; Numpy 1.8.1

在查看矩阵旋转的示例时here我不断收到错误。

代码:

m = np.arange(8).reshape((2,2,2))
np.rot90(m, 1, (1,2))

错误:

TypeError: rot90() takes at most 2 arguments (3 given)

我尝试复制、粘贴并输入代码,但没有任何乐趣。

我理解错误的文本,但不明白原因,特别是因为它是直接来自 SciPy 站点的代码。

问题是什么?

最佳答案

不幸的是,我认为1.12.0版本中的新增功能。被放置在错误的位置。事实上,当你查看1.8.1 documentation时您会看到它只接受参数 mk:

numpy.rot90(m, k=1)

已在版本 1.12.0 中添加现在 rot90 接受 axis 参数:

numpy.rot90(m, k=1, axes=(0, 1)

对应的变更日志是here .

axes keyword argument for rot90

The axes keyword argument in rot90 determines the plane in which the array is rotated. It defaults to axes=(0,1) as in the original function.

但是函数本身不是很长,你可能可以直接复制过来:

def rot90(m, k=1, axes=(0,1)):
axes = tuple(axes)
if len(axes) != 2:
raise ValueError("len(axes) must be 2.")

m = asanyarray(m)

if axes[0] == axes[1] or absolute(axes[0] - axes[1]) == m.ndim:
raise ValueError("Axes must be different.")

if (axes[0] >= m.ndim or axes[0] < -m.ndim
or axes[1] >= m.ndim or axes[1] < -m.ndim):
raise ValueError("Axes={} out of range for array of ndim={}."
.format(axes, m.ndim))

k %= 4

if k == 0:
return m[:]
if k == 2:
return flip(flip(m, axes[0]), axes[1])

axes_list = arange(0, m.ndim)
(axes_list[axes[0]], axes_list[axes[1]]) = (axes_list[axes[1]],
axes_list[axes[0]])

if k == 1:
return transpose(flip(m,axes[1]), axes_list)
else:
# k == 3
return flip(transpose(m, axes_list), axes[1])

def flip(m, axis):
if not hasattr(m, 'ndim'):
m = asarray(m)
indexer = [slice(None)] * m.ndim
try:
indexer[axis] = slice(None, None, -1)
except IndexError:
raise ValueError("axis=%i is invalid for the %i-dimensional input array"
% (axis, m.ndim))
return m[tuple(indexer)]

关于python - 在具有 3 个参数的 3D numpy 数组上使用 rot90 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45870603/

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