Доброго времени суток. Возникла такая проблема с Python-ом: в нижеприведенном коде создаются две матрицы - L и L_v, далее необходимо кое-какие куски из матрицы L “заносить” в матрицу L_v. Для выделения кусков из каждой матрицы служит функция b_j, принимающая матрицу и некоторое число j_. Собственно вопрос технический: почему при выделении с помощью функции необходимого куска матрицы L_v и присваиванию этому куску выделенной части матрицы L возникает ошибка SyntaxError: can't assign to function call. Разве в результате выполнения функции b_j(L_v,0) - это не объект matrix 3 на 3, так же как b_j(L,0)?
import numpy as np
n=9
n_=3
def b_j(L_,j_):
return L_[n_*j_:n_*(j_+1),n_*j_:n_*(j_+1)]
a=np.zeros((n,n))
a1=np.zeros((n,n))
L=np.matrix(a)
L_v=np.matrix(a1)
j=0
# 1. Кусок 3x3 из матрицы L -> в L_v
L_v[n_*j:n_*(j+1),n_*j:n_*(j+1)]=L[n_*j:n_*(j+1),n_*j:n_*(j+1)] # Получается нужный результат
# 2. То же самое
L_v[n_*j:n_*(j+1),n_*j:n_*(j+1)]=b_j(L,0) # Получается нужный результат
# 3. НО
b_j(L_v,0)=b_j(L,0) # SyntaxError: can't assign to function call
К тому же при изменении конкретных значений L_v через b_j все работает:
b_j(L_v,0)[1,1] = b_j(L,0)[1,1] # Работает
Спасибо за ответы.