Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2014 23:40:28

s1611
Зарегистрирован: 2013-10-13
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Numpy.matrix и функции

Доброго времени суток. Возникла такая проблема с 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] # Работает

Спасибо за ответы.

Офлайн

#2 Ноя. 15, 2014 01:04:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10014
Репутация: +  857  -
Профиль   Отправить e-mail  

Numpy.matrix и функции

>>> def f():
...   return [][:]
... 
>>> f() = []
  File "<stdin>", line 1
SyntaxError: can't assign to function call
>>> 
>>> [][:] = []
>>>



Отредактировано py.user.next (Ноя. 15, 2014 01:05:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version