«Однолинейное» решение было бы
np.concatenate((a[:,:1],
np.lib.stride_tricks.as_strided(0,[len(a),1],[0,0]),
a[:,1:2],
np.lib.stride_tricks.as_strided(0,[len(a),2],[0,0]),
a[:,2:3],
np.lib.stride_tricks.as_strided(0,[len(a),2],[0,0]),
a[:,3:4],
np.lib.stride_tricks.as_strided(0,[len(a),3],[0,0]),
a[:,4:]), -1)
Хотя оно в любом смысле проводное.Использование append
потребует еще больше as_strided
с.Я считаю, что должна быть append
-нишная функция, которая автоматически транслирует ввод, но я не уверен, что это такое.В любом случае, лучшее решение определенно, как упомянул @hpaulj:
b = np.zeros((len(a), 13), a.dtype)
b[:,[0,2,5,8,12]] = a
здесь a
означает ввод, b
означает вывод