Python:如何将数组中的值从一位置移动到另一位置?

3

我有一个值的数组

a = np.array([0,3,4,5,12,3,78,53,52])

我想把从索引3开始的数组中最后三个元素移动到前面。
a 
array([ 0, 3, 4, 78, 53, 52, 5, 12, 3])
4个回答

3
你可以使用切片和拼接。
np.concatenate((a[:3], a[-3:], a[3:-3]))

我们只需要执行三个数字交换操作。你的解决方案将涉及复制所有其他(更大的)数据块。这是不必要的,你觉得呢? - fountainhead

2
使用np.delete()np.insert()尝试这个操作:最初的回答。
a = np.array([0,3,4,5,12,3,78,53,52])
index = 6
another_index = 0
v = a[index]
np.delete(a,index)
np.insert(a, another_index, v)

1
这只是一个数字交换问题,而不是numpy问题。
任何涉及numpy函数(如concatenate、delete、insert或甚至切片)的解决方案都是低效的,涉及不必要的数据复制。
这应该可以工作,并且最小化数据复制。
a[3],a[4],a[5], a[-3],a[-2],a[-1] = a[-3],a[-2],a[-1], a[3],a[4],a[5]

print(a)

输出:

[ 0  3  4 78 53 52  5 12  3]

0

从这里开始

a = np.array([0,3,4,5,12,3,78,53,52])

你可以这样做:

newa=[]
for index, each in enumerate(a):
    if index<3:
        newa.append(a[index])
    else:
        newa.append(a[3+index%6])

将得到的newa返回:

[0, 3, 4, 78, 53, 52, 5, 12, 3]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接