@ cᴏʟᴅsᴘᴇᴇᴅ Этот вопрос не столько об эффективности, сколько о читаемости. Я думаю, это зависит от размера данных. Метод достаточно быстр, проверен на моем компьютере: 10,1 мкс ± 220 нс на цикл (среднее ± стандартное отклонение из 7 циклов, 100000 циклов каждый). Ваши методы примерно в 3 раза быстрее, чем мой на моем компьютере. Но да ... это зависит от размера данных ...
я есть два массива a & b
a.shape
(5, 4, 3)
array([[[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0.10772717, 0.604584 , 0.41664413]],
[[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0.10772717, 0.604584 , 0.41664413],
[ 0.95879616, 0.85575133, 0.46135877]],
[[ 0. , 0. , 0. ],
[ 0.10772717, 0.604584 , 0.41664413],
[ 0.95879616, 0.85575133, 0.46135877],
[ 0.70442301, 0.74126523, 0.88965603]],
[[ 0.10772717, 0.604584 , 0.41664413],
[ 0.95879616, 0.85575133, 0.46135877],
[ 0.70442301, 0.74126523, 0.88965603],
[ 0.8039435 , 0.62802183, 0.58885027]],
[[ 0.95879616, 0.85575133, 0.46135877],
[ 0.70442301, 0.74126523, 0.88965603],
[ 0.8039435 , 0.62802183, 0.58885027],
[ 0.95848603, 0.72429311, 0.71461332]]])
и б
array([ 0.79212707, 0.66629398, 0.58676553], dtype=float32)
b.shape
(3,)
Я хочу получить массив
ab.shape
(5,5,3)
Я делаю, как показано ниже
b = b.reshape(1,1,3)
тогда
b=np.concatenate((b, b,b, b, b), axis = 0)
А также
ab=np.concatenate((a, b), axis = 1)
ab.shape
(5, 5, 3)
Я получаю правильный результат, но это не очень удобно, особенно на этапе
b=np.concatenate((b, b,b, b, b), axis = 0)
когда мне приходится печатать много раз (реальный набор данных имеет много измерений). Есть ли более быстрые способы прийти к этому результату?