1. 程式人生 > >【Python】交換兩個陣列的切片,有坑

【Python】交換兩個陣列的切片,有坑

問題描述:

交換陣列a和陣列b的前5個元素,如果用C語言思路寫,會發現有坑:

a=np.zeros(10)
b=np.ones(10)
t=a[:5]
a[:5]=b[:5]
b[:5]=t
a
array([1., 1., 1., 1., 1., 0., 0., 0., 0., 0.])
b
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

顯然,b陣列的前五個元素指向a的前五個元素的地址,因此b保持不變。

這個問題特別容易發生在:遺傳演算法-交叉過程-部分匹配交叉(Partially Matched Crossover (PMX))