Python 高效交叉两个NumPy阵列

Python 高效交叉两个NumPy阵列,python,arrays,numpy,Python,Arrays,Numpy,我想用最少的计算和内存来交叉(在索引“x”处交换尾部)两个NumPy数组。 目前我的做法如下: import numpy as np a1 = np.zeros(10) a2 = np.ones(10) x = np.random.randint(1, a1.size) a1[:x], a2[:x] = a2[:x].copy(), a1[:x].copy() 是否有任何方法可以避免copy语句,无论交叉是否已完成?谢谢大家! 使用tmp变量保存一个复制- tmp = a2[:x].copy(

我想用最少的计算和内存来交叉(在索引“x”处交换尾部)两个NumPy数组。 目前我的做法如下:

import numpy as np
a1 = np.zeros(10)
a2 = np.ones(10)
x = np.random.randint(1, a1.size)
a1[:x], a2[:x] = a2[:x].copy(), a1[:x].copy()

是否有任何方法可以避免copy语句,无论交叉是否已完成?谢谢大家!

使用
tmp
变量保存一个
复制
-

tmp = a2[:x].copy()
a2[:x], a1[:x]  = a1[:x], tmp
样本运行-

1) 开始时(分配前):

2) 拟议守则:

In [325]: tmp = a2[:x].copy()
     ...: a2[:x], a1[:x]  = a1[:x], tmp
     ...: 
3) 验证结果:

In [326]: a1
Out[326]: array([ 1.,  1.,  1.,  1.,  0.,  0.,  0.,  0.,  0.,  0.])

In [327]: a2
Out[327]: array([ 0.,  0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.])
In [326]: a1
Out[326]: array([ 1.,  1.,  1.,  1.,  0.,  0.,  0.,  0.,  0.,  0.])

In [327]: a2
Out[327]: array([ 0.,  0.,  0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.])