c = (b.reshape(2,4)+a).ravel()
Reshape и усложнять оба мнения, так (я думаю) только новый массив производится путем суммирования. Фактически я меняю b
на форму, которая может быть передана с помощью a
.
Это значительно быстрее, даже в этой небольшой проблеме.
broadcast_array
позволяет сделать вещательные шаги
In [506]: b1,a1 = np.broadcast_arrays(b.reshape(2,4),a)
a1
вид, как показан буфером данных указателем
In [507]: a1.__array_interface__['data']
Out[507]: (164774704, False)
In [508]: a.__array_interface__['data']
Out[508]: (164774704, False)
СУММА
In [509]: a1+b1
Out[509]:
array([[ 2.04663934, 1.02951915, 1.30616273, 1.75154236],
[ 1.79237632, 1.08252741, 1.17031265, 1.2675438 ]])
a1
имеет, по сути, был черепичными без копирования
In [511]: a1.shape
Out[511]: (2, 4)
In [512]: a1.strides
Out[512]: (0, 8)
Посмотрите на np.lib.stride_tricks.py
файл для более подробной информации о таком роде вещание. np.lib.stride_tricks.as_strided
- основная функция, которая позволяет вам создавать представление с новой формой и шагами. Он чаще всего использовался на SO для создания скользящих окон.
Хорошо! благодаря – Jake0x32