N=100
reliab=zeros((N,N))
for i in range(N):
for j in range(N):
if random() < 0.6:
reliab[i,j] = 1
else:
reliab[i,j] = 0
Как и в моем коде, это заполнение матрицы вызывает огромное количество раз, это для циклов должно быть изменено с помощью точечного продукта... но я не знаю, как это сделать... Кто-нибудь хочет помочь мне?
Я не уверен, что полностью понимаю вашу проблему, но следующая строка должна делать то же самое, что и ваш код:
reliab = numpy.int32(numpy.random.rand(N,N) < 0.6)
>>> import numpy as np
>>> reliab = np.random.random((N,N))
>>> reliab = reliab < 0.6
>>> reliab.dtype = np.int8
>>> reliab
array([[0, 0, 0, ..., 1, 0, 1],
[0, 1, 1, ..., 0, 1, 0],
[1, 1, 0, ..., 1, 0, 1],
...,
[0, 1, 0, ..., 1, 1, 1],
[0, 0, 1, ..., 1, 1, 1],
[0, 1, 0, ..., 0, 0, 0]], dtype=int8)
[0,1)
, поэтому масштабирование не требуется. (Или, суммируя мой массив, я получаю 6009 из 10000, что почти на 60%). (Да, вы опередили меня с ответом, и они похожи, но я решил, что все равно напишу ответ).