【问题标题】:how to do circular shift in numpy如何在numpy中进行循环移位
【发布时间】:2013-03-25 10:06:19
【问题描述】:

我有一个 numpy 数组,例如

a = np.arange(10)

如何将第一个 n 元素移动到数组的末尾?

我找到了这个 roll 函数,但它似乎只是做相反的事情,它将最后一个 n 元素移到开头。

【问题讨论】:

  • roll 不正是您想要的吗?不是将第一个 n 元素移到末尾,而是将最后一个 len(a)-n 元素移到开头?
  • 发布一些你想要的和你正在寻找的数据。

标签: python arrays numpy shift


【解决方案1】:

为什么不只是 roll 带有一个负数?

>>> import numpy as np
>>> a = np.arange(10)
>>> np.roll(a,2)
array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])
>>> np.roll(a,-2)
array([2, 3, 4, 5, 6, 7, 8, 9, 0, 1])

【讨论】:

    【解决方案2】:

    你可以使用负移位

    a = np.arange(10)
    print(np.roll(a, 3))
    print(np.roll(a, -3))
    

    返回

    [7, 8, 9, 0, 1, 2, 3, 4, 5, 6]
    [3、4、5、6、7、8、9、0、1、2]

    【讨论】:

    • 你能告诉我,为什么 circshift (eye (m), 2) 和 numpy.roll(numpy.eye(m), -2)) 会产生不同的结果吗?
    • 1.) 什么是 circshift? 2) cmets 这不是提出与问题无关的问题的正确地方
    • @FrancescoMontesano circshiftMATLAB function
    • 我不知道 Matlab。我的猜测是:索引从 0 或 1;列优先与行优先排序; ...
    猜你喜欢
    • 2021-03-06
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2016-05-26
    相关资源
    最近更新 更多