Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 围绕数组中的元素旋转numpy数组_Python_Sorting_Numpy - Fatal编程技术网

Python 围绕数组中的元素旋转numpy数组

Python 围绕数组中的元素旋转numpy数组,python,sorting,numpy,Python,Sorting,Numpy,我需要能够围绕数组中的某个元素旋转numpy数组 假设我有一个数组x=[abcdefg] 我知道反转它的操作:x_arr=[::-1]==[g f e d c b a] 但是假设我想把我的原始数组的重心放在c上,那么我想:[edcbA00] 我正在考虑倒过来,然后进行某种连接和缩减,但如果能提供一些帮助,我将不胜感激。我没有使用过numpy,所以我对它不太熟悉, 但是你想要实现的是非常简单的 x = ['a','b','c','d','e','f','g'] pivot = 'c' len_x

我需要能够围绕数组中的某个元素旋转numpy数组

假设我有一个数组
x=[abcdefg]

我知道反转它的操作:
x_arr=[::-1]==[g f e d c b a]

但是假设我想把我的原始数组的重心放在
c
上,那么我想:
[edcbA00]


我正在考虑倒过来,然后进行某种连接和缩减,但如果能提供一些帮助,我将不胜感激。

我没有使用过numpy,所以我对它不太熟悉, 但是你想要实现的是非常简单的

x = ['a','b','c','d','e','f','g']
pivot = 'c'

len_x = len(x)
pad_len = len_x - len(x[:x.index(pivot)*2 + 1])

y = x[:x.index(pivot)*2 + 1]
y = list(reversed(y))

for i in range(pad_len):
    y.append('0')

print y
输出是
['e','d','c','b','a','0','0']


我希望这就是您要查找的内容。

我编写了以下脚本,其中
a
是数组,
p
是枢轴元素的索引,
f
用于在枢轴之后填充数组。通过一些逻辑和反复试验,找到了截断阵列的指标。请注意,对于偶数长度数组,中心索引
c
将为
x.5
,其中
x
为整数,而对于奇数长度数组,其将为
x.0
。这允许if语句正确处理偶数和奇数长度数组

在第一种情况下,当pivot元素是数组的中心时,我只返回数组的相反方向。请注意,偶数长度数组永远不会执行此if语句

在第二种情况下,当pivot元素位于数组中心之前时,我将从反向数组中移除掉在pivot数组之外的元素。然后我将这个用
f
右填充的缩短数组返回到
a
的长度

第三种情况(枢轴元素位于数组中心之后)与第二种情况之间的唯一区别是缩短的数组是左填充而不是右填充

最后,如果由于某些不可预见的错误而没有执行任何if语句,则返回
none

#!/usr/bin/env python

import numpy as np

def pivot(a,p,f):
    la = len(a)
    c = la/2.0-0.5
    x = a[::-1]
    if p==c:
        return x
    if p<c:
        x = x[la-(2*p+1):]        
        lpad = la-len(x)
        pad = np.repeat(f,lpad)
        return np.append(x,pad)
    if p>c:
        x = x[:2*(la-p)-1]
        lpad = la-len(x)
        pad = np.repeat(f,lpad)
        return np.append(pad,x)
    return None
#/usr/bin/env python
将numpy作为np导入
def枢轴(a、p、f):
la=len(a)
c=la/2.0-0.5
x=a[:-1]
如果p==c:
返回x
如果是pc:
x=x[:2*(la-p)-1]
lpad=拉伦(x)
pad=np.重复(f,lpad)
返回np.append(pad,x)
一无所获

如果x中的元素是浮点数,而我需要围绕一个整数值旋转,该怎么办?对于数组中心右侧的旋转元素,这不正确。我想OP也需要这个功能。