У меня есть Numpy массив сказатьДублирование элементов в Numpy массиве
a = array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
У меня есть массив «репликацию» одного и того же размера, где репликация [I, J] (> = 0) обозначает, сколько раз [ i] [j] следует повторять вдоль строки. Обидно, массив репликации следует за инвариантом, что np.sum (replication [i]) имеет одинаковое значение для всех i. Например, если
replication = array([[1, 2, 1],
[1, 1, 2],
[2, 1, 1]])
тогда конечный массив после тиражирования является:
new_a = array([[1, 2, 2, 3],
[4, 5, 6, 6],
[7, 7, 8, 9]])
В настоящее время я делаю это, чтобы создать new_a:
##allocate new_a
h = a.shape[0]
w = a.shape[1]
for row in range(h):
ll = [[a[row][j]]*replicate[row][j] for j in range(w)]
new_a[row] = np.array([item for sublist in ll for item in sublist])
Однако, это, кажется, слишком медленный, поскольку он включает использование списков. Могу ли я сделать целиком в numpy, без использования списков python?
Спасибо, используя только NumPy является порядок величин быстрее, чем взаимодействие со списками. –