От циклов for к реализации numpy dot - PullRequest
1 голос
/ 01 июня 2011
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

Так как в моем коде это заполнение матрицы вызывается огромное количество раз, эти циклы for должны быть заменены точечным произведением ... но я не знаю, как это сделать ... Кто-нибудь готов помочь мне?

Ответы [ 2 ]

4 голосов
/ 01 июня 2011

Я не уверен, что полностью понимаю вашу проблему, но следующая строка должна делать то же самое, что и ваш код:

reliab = numpy.int32(numpy.random.rand(N,N) < 0.6)
1 голос
/ 01 июня 2011
>>> 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...