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

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

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

В отдельном модуле numpy вполне себе работает.
PooH
Покажите весь трейс исключения. Судя по ошибке дело не в импорте.
risele
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 - результат тот же.
doza_and
risele
\Учебное\УИР и прочее\
1 Не есть гуд. Огребете сложности во многих местах в которых иначе их вообще не былобы
2 Код пожалуйста приведите который дает такой трейс (CavityFunctions.py).
risele
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)
doza_and
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\Учебное\УИР и прочее
:(
risele
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 не производит.
odnochlen
risele, запусти питон и набери в интерпретаторе import numpy.
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