Как заполнить разреженную матрицу на 95% нулями?
Мне необходимо заполнить разреженную матрицу на 95% нулями.
Как это сделать?
Пока сделал просто заполнение матрицы случайным образом нулями и единицами. Вручную вводить каждый элемент не хочется.
Мой код:
import numpy as np
a = np.random.randint(0, 2, size=(10, 10))
print(a)
Ответы (2 шт):
Автор решения: rew
→ Ссылка
Я не знаю можно ли сделать это в одну строчку, но можно так
import numpy as np
a = np.random.randint(1, 101, size=(10, 10))
for i in range(len(a)):
for j in range(len(a[i])):
if a[i][j] <= 95:
a[i][j] = 0
else:
a[i][j] = 1
print(a)
Или еще есть вариант использовать обычный random а не numpy.random
Автор решения: MaxU
→ Ссылка
Воспользуйтесь np.random.choice():
a = np.random.choice([0,1], size=(10,10), p=(.95, .05))
Результат:
In [8]: a
Out[8]:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
In [9]: a.sum()
Out[9]: 5