Найти - Пользователи
Полная версия: Numpy.matrix и функции
Начало » Python для новичков » Numpy.matrix и функции
1
s1611
Доброго времени суток. Возникла такая проблема с 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] # Работает

Спасибо за ответы.
py.user.next
>>> def f():
...   return [][:]
... 
>>> f() = []
  File "<stdin>", line 1
SyntaxError: can't assign to function call
>>> 
>>> [][:] = []
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB