You can use np.concatenate, First output array can be created by concatenating first column of array1 and array2 along the axis =1, and similarly for second output array take second column from array1 and array2.
Use:
new_arr1 = np.concatenate((array1[:, 0:1], array2[:, 0:1]), axis = 1)
new_arr2 = np.concatenate((array1[:, 1:2], array2[:, 1:2]), axis = 1)
Output:
>>> new_arr1
array([[ 1, 11],
[ 3, 13],
[ 8, 19]])
>>> new_arr2
array([[ 2, 12],
[ 4, 14],
[ 9, 20]])
If you don't want to keep the original array we can do inplace changes which will only take extra memory for one column.
temp = array1[:, 1].copy()
array1[:, 1] = array2[:, 0]
array2[:, 0] = temp
Output:
>>> array1
array([[ 1, 11],
[ 3, 13],
[ 8, 19]])
>>> array2
array([[ 2, 12],
[ 4, 14],
[ 9, 20]])