Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2012 01:03:09

risele
От: Москва
Зарегистрирован: 2012-10-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль математических функций.

Здравствуйте, господа.
Увы, в авральном режиме приходится переписывать программу с MatLab'а на Python, который вижу впервые в жизни (как и ООП вообще - прошлый опыт - pascal,fortran,matlab).

В программе присутствует некоторое число математических функций, работающих с матрицами.
Дабы не городить их в основной программе, решил создать модуль с всеми функциями.
Все функции производят операции с использованием пакета NumPy.
Вопрос в том, как правильно его подгружать в программу?
В обоих случаях(импорт только в основной модуль, и импорт и в основной, и в функциональный модули) возникает ошибка:

NameError: global name 'numpy' is not defined

Отредактировано risele (Окт. 18, 2012 01:04:57)

Офлайн

#2 Окт. 18, 2012 03:12:39

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Модуль математических функций.

Каким образом вы устанавливали numpy?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 18, 2012 07:33:38

risele
От: Москва
Зарегистрирован: 2012-10-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль математических функций.

С официального сайта скачал инсталлер (по ссылке на неофицальные - система win64), закинул в папку с Python'ом и запустил. Никаких изменений в процесс установки не вводил.

В отдельном модуле numpy вполне себе работает.

Офлайн

#4 Окт. 18, 2012 08:20:45

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Модуль математических функций.

Покажите весь трейс исключения. Судя по ошибке дело не в импорте.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Окт. 18, 2012 20:00:53

risele
От: Москва
Зарегистрирован: 2012-10-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль математических функций.

Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    T=CavityFunctions.CavityElement(R,E,ind,wave,nr,Diaf)
  File "H:\Save\Учебное\УИР и прочее\Python\CavityFunctions.py", line 3, in CavityElement
    T1=numpy.matrix([[1,0],[-2/Elem[ind-1],1]])
NameError: global name 'numpy' is not defined

Пробую вызывать отдельно из IDLE - результат тот же.

Офлайн

#6 Окт. 18, 2012 20:04:43

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Модуль математических функций.

risele
\Учебное\УИР и прочее\
1 Не есть гуд. Огребете сложности во многих местах в которых иначе их вообще не былобы
2 Код пожалуйста приведите который дает такой трейс (CavityFunctions.py).



Отредактировано doza_and (Окт. 18, 2012 20:05:39)

Офлайн

#7 Окт. 18, 2012 20:08:21

risele
От: Москва
Зарегистрирован: 2012-10-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль математических функций.

doza_and
risele
\Учебное\УИР и прочее\
1 Не есть гуд. Огребете сложности во многих местах в которых иначе их вообще не былобы
2 Код пожалуйста приведите который дает такой трейс (CavityFunctions.py).

1. Путь честно прописан в файлике с разрешением .pth и всё подгружается.

2. Там вообще практически ничего пока нет. Вариация - это
import numpy
в начале строки, но оно ничего не меняет:
def CavityElement(Cav,Elem,ind,wave,nr,DiafNum):
	if Cav[ind-1]=='M':
		T1=numpy.matrix([[1,0],[-2/Elem[ind-1],1]])
	elif Cav[ind-1]=='L':
		T1=numpy.matrix([[1,0],[-1/Elem[ind-1],1]])
	elif Cav[ind-1]=='S':
		T1=numpy.matrix([[1,Elem[ind-1]],[0,1]])
	elif Cav[ind-1]=='R':
		T1=numpy.matrix([[1,Elem[ind-1]/nr],[0,1]])
	elif Cav[ind-1]=='A':
		t=2j*wave/(numpy.pi*DiafNum*(Elem[ind-1])**2)
		T1=numpy.matrix([[1,0],[t,1]])
	T=T1
	return(T)

Офлайн

#8 Окт. 18, 2012 20:13:26

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Модуль математических функций.

risele
в начале строки, но оно ничего не меняет:
дело ваше.

Ваш код выполняется без проблем
import numpy
def CavityElement(Cav,Elem,ind,wave,nr,DiafNum):
	if Cav[ind-1]=='M':
		T1=numpy.matrix([[1,0],[-2/Elem[ind-1],1]])
	elif Cav[ind-1]=='L':
		T1=numpy.matrix([[1,0],[-1/Elem[ind-1],1]])
	elif Cav[ind-1]=='S':
		T1=numpy.matrix([[1,Elem[ind-1]],[0,1]])
	elif Cav[ind-1]=='R':
		T1=numpy.matrix([[1,Elem[ind-1]/nr],[0,1]])
	elif Cav[ind-1]=='A':
		t=2j*wave/(numpy.pi*DiafNum*(Elem[ind-1])**2)
		T1=numpy.matrix([[1,0],[t,1]])
	T=T1
	return(T)
print "ok"
>>> ok

Дело в установке питона
Я думаю что вполне может быть потому что вы поставили его в папку H:\Save\Учебное\УИР и прочее
:(



Отредактировано doza_and (Окт. 18, 2012 20:14:34)

Офлайн

#9 Окт. 18, 2012 20:24:15

risele
От: Москва
Зарегистрирован: 2012-10-16
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль математических функций.

doza_and
Дело в установке питона
Я думаю что вполне может быть потому что вы поставили его в папку H:\Save\Учебное\УИР и прочее
Ща посмотрим
Python установлен D:\Programms\Python

Перенес в основной каталог Python'а, не сильно помогло:
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    T=CavityFunctions.CavityElement(R,E,ind,wave,nr,Diaf)
  File "CavityFunctions.py", line 3, in CavityElement
    if Cav[ind-1]=='M':
NameError: global name 'numpy' is not defined

Пробовал и без импорта, и с импортом в модуле.
При запуске с принтом в конце - да, выполняется, поскольку через if'ы не проходит и операций никаких с numpy не производит.

Отредактировано risele (Окт. 18, 2012 20:25:20)

Офлайн

#10 Окт. 18, 2012 21:43:11

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Модуль математических функций.

risele, запусти питон и набери в интерпретаторе import numpy.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version