@ 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)

когда мне приходится печатать много раз (реальный набор данных имеет много измерений). Есть ли более быстрые способы прийти к этому результату?

Ответы на вопрос(1)

Ваш ответ на вопрос