【发布时间】:2020-03-03 23:35:07
【问题描述】:
我正在尝试为没有显式循环的遗传算法编码单一交叉育种方法。因此,我需要添加一行数组和另一行具有所需结果的另一个数组,如下所示。请注意,col_idx 数组选择要繁殖的特定行,而切片索引数组告诉我们在哪里切片(我想将数组的块保持在一个包含端点的位置)。
a=np.arange(20).reshape(4,5)
print('a')
print(a)
a
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
b=np.arange(20).reshape(4,5)*100
print('b')
print(b)
b
[[ 0 100 200 300 400]
[ 500 600 700 800 900]
[1000 1100 1200 1300 1400]
[1500 1600 1700 1800 1900]]
row_idx_a=np.array([3,1,0,3,1,3]) #edit-fixed array
row_idx_b=np.array([1,1,0,0,0,3]) #edit-fixed array to fix error identified by the answer below
slice_idx=np.array([2,1,0,4,4,3])
merged_array=np.zeros((4,5)) ######place holder for final array
#####now some creative slicing magic so that my final array is an irregular indexed addition#######
[[ 15 16 17 800 900]
[ 5 6 700 800 900]
[ 0 100 200 300 400]
[ 15 16 17 18 19]
[ 5 6 7 8 9]
[ 15 16 17 18 1900]]
我发现很难矢量化这个问题?有接盘侠吗?谢谢。
【问题讨论】:
标签: python arrays numpy vectorization