Предположим, dst
это ndarray с формой (5, N), а ramp
это ndarray с формой (5,). (В данном случае N = 2):
>>> dst = np.zeros((5, 2))
>>> dst
array([[0., 0.],
[0., 0.],
[0., 0.],
[0., 0.],
[0., 0.]])
>>> ramp = np.linspace(1.0, 2.0, 5)
>>> ramp
array([1. , 1.25, 1.5 , 1.75, 2. ])
Теперь я хотел бы скопировать рампу в столбцы dst, в результате чего:
>>> dst
array([[1., 1.],
[1.25., 1.25.],
[1.5., 1.5.],
[1.75, 1.75],
[2.0, 2.0]])
Я не сделал ожидайте, что это сработает, а это не так:
>>> dst[:] = ramp
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (5) into shape (5,2)
Это работает, но я уверен, что есть более «нумпейский» способ выполнить sh это:
>>> dst[:] = ramp.repeat(dst.shape[1]).reshape(dst.shape)
>>> dst
array([[1. , 1. ],
[1.25, 1.25],
[1.5 , 1.5 ],
[1.75, 1.75],
[2. , 2. ]])
Есть идеи?
note
В отличие от "клонирования" векторов строк или столбцов , я хочу присвоить ramp
в dst
(или даже в подмножестве dst
). Кроме того, приведенное там решение использует массив python в качестве источника, а не ndarray, и поэтому требует вызовов .transpose, et c.