Обновление значений в массиве numpy без утомительных циклов - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть несколько массивов с данными, подобными этим:

a = np.random.rand(3,3)
b = np.random.rand(3,3)

Используя для циклов, я создаю большую матрицу

L = np.zeros((9,9))
for i in range(9):
    for j in range(9):
        L[i,j] = f(a,b,i,j) # values of L depends on values of a and b

Позже в моей программе я изменю a и b, и яхочу, чтобы мой массив L тоже изменился.Таким образом, логика моей программы выглядит следующим образом (в псевдокоде)

Create a
Create b
while True:
    Create L using a and b
    Do the stuff
    Change a
    Change b

В моей программе размер L велик (10 ^ 6 x 10 ^ 6 и больше).Построение этой L-матрицы снова и снова является утомительным и медленным процессом.Вместо того, чтобы делать циклы снова и снова, я хотел бы просто обновить значения матрицы L в соответствии с измененными значениями a и b.Структура L одинакова каждый раз, единственное отличие - это значения ячеек.Примерно так:

a[0,0] = 2
b[0,0] = 2
L[3,5] = 2*a[0,0]*b[0,0]
L[3,5]
# >>> 8

a[0,0] = 3
b[0,0] = 1

# do some magic here 
L[3,5]
>>> 6

1 Ответ

0 голосов
/ 28 декабря 2018

Может ли что-то подобное решить вашу проблему?

>>> a = 10
>>> b = 20
>>> def func():
        # fetch the values of a and b
...     return a+b
... 
>>> lis = [func]
>>> lis[0]
<function func at 0x109f70730>
>>> lis[0]()
30
>>> a = 20
>>> lis[0]()
40

Обычно каждый раз, когда вы выбираете значение, вызывая функцию, которая вычисляет последнее значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...