Для каждой строки я хочу вставить несколько похожих строк сразу после строки, при этом только столбец 4 каждый раз будет уменьшаться на 1 до 0. Ожидаемый результат должен выглядеть следующим образом:
new_rows = []
for i, row in enumerate(A):
new = A[i, 4] - 1
while new >= 0:
new_row = row.copy()
new_row[4] = new
new_rows.append(new_row)
new -= 1
new_A = np.vstack([A, np.array(new_rows)])
print(new_A)
Очевидно, что код неэффективен, поскольку он не использует векторизацию Numpy. На самом деле у меня более 4000 исходных строк, поэтому ускорение определенно необходимо. Более того, я не могу вставлять новые строки сразу после каждой строки. Есть ли какой-нибудь эффективный способ сделать это в Numpy или Pandas?
Предположим, у меня есть фрейм данных Pandas с 4 строками и 5 столбцами. Для простоты я преобразую его в массив Numpy, который выглядит так: [code]import numpy as np
A = np.array([[23, 43, 23, 110, 5], [83, 32, 12, 123, 4], [58, 41, 59, 189, 1], [93, 77, 22, 170, 3]]) [/code] Для каждой строки я хочу вставить несколько похожих строк [b]сразу после[/b] строки, при этом только столбец 4 каждый раз будет уменьшаться на 1 до 0. Ожидаемый результат должен выглядеть следующим образом: [code]np.array([[23, 43, 23, 110, 5], [23, 43, 23, 110, 4], [23, 43, 23, 110, 3], [23, 43, 23, 110, 2], [23, 43, 23, 110, 1], [23, 43, 23, 110, 0],