【问题标题】:How to rotate an array in Python?如何在 Python 中旋转数组?
【发布时间】:2020-10-02 16:37:09
【问题描述】:

我正在尝试在 Python 中旋转数组。我已经阅读了以下帖子Python Array Rotation

我在哪里找到了这个小sn-p代码

arr = arr[numOfRotations:]+arr[:numOfRotations]

我尝试将其放入以下函数中:

def solution(A, K):
    A = A[K:] + A[:K]
    print(A)
    return A

其中 A 是我的数组,K 是旋转次数。只有我得到以下错误,ValueError:操作数无法与形状(3,)(2,)一起广播。

我不明白我哪里出错了?理想情况下,我的解决方案可以在不使用任何 Numpy 内置快捷方式功能的情况下解决此问题。

干杯

编辑:这是完整的程序

A = np.array([1, 2, 3, 4, 5])

def solution(A, K):
    A = A[K:]+A[:K]
    print(A)
    return A

solution(A, 2)

【问题讨论】:

  • 你能告诉我们你是如何调用你的方法的吗?你提供的代码对我来说很好用solution([1,2,3], 1)
  • 这些真的不行???在测试中使用solution([1,2,3],1) 为我工作
  • 所以当我以你们两个相同的方式调用它时,它工作得很好,但是这个方法提供了一个列表作为参数,而不是一个数组。这似乎是问题

标签: python arrays numpy rotation


【解决方案1】:

您需要使用np.concatenate((A[K:],A[:K])) 如果 A 是一个数组, 当Alist 时,您的功能有效

免得从你的例子中看

A = np.array([1, 2, 3, 4, 5])
K = 2
print(A[K:])
print(A[:K])

会给你[3 4 5][1 2]。 在您的代码中,您尝试使用 + 符号添加它们。 由于这两个值的形状不同,您无法添加它们,因此您将得到ValueError: operands could not be broadcast together with shapes (3,) (2,)

数组的正确实现是

import numpy as np
A = np.array([1, 2, 3, 4, 5])

def solution(A, K):
    A = np.concatenate((A[K:],A[:K]))
    print(A)
    return A

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-25
    • 2021-11-02
    • 2015-09-19
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多