Таким образом, вы возвращаете только M
и p
для вашего первого индекса, i=0.01
, это потому, что цикл остановится, как только вы что-то вернете. Кроме того, поскольку вы можете использовать range
, указанный в python, ваша первая функция излишня. Я предлагаю вам вернуть ваши матрицы и индексы, например, с помощью List (вы также можете сделать это с помощью np.arrays).
def loop(M, p):
mat_list = []
indices_list = []
for i in range(0.01, p, 0.01):
indices = random.sample(range(np.shape(M)[0]),
int(round(np.shape(M)[0] * i)))
M = np.delete(M, indices, axis=0) # removes rows
M = np.delete(M, indices, axis=1) # removes columns
mat_list.append(M)
indices_list.append(indices)
return mat_list, indices_list
Если вы также хотите включить вероятность p
, то вы должны пройти через
range(0.01, p+0.01, 0.01)
.