Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


Python - высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: useretail, 21:51 22-06-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну да, как и всегда в жизни:
когда все варианты исчерпаны, прочти инструкцию...
 
спасибо за урок...

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 13:58 01-09-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я бы использовал массивы numpy вместо списков.

Код:
import numpy as np
import matplotlib.pyplot as plt
n,m=np.loadtxt('file.txt', dtype='int32', comments=';', unpack=True, max_rows=1)
x=np.loadtxt('file.txt',  comments=';',  max_rows=1, skiprows=1)
y=np.loadtxt('file.txt',  comments=';',  max_rows=1, skiprows=2)
z=np.loadtxt('file.txt',  comments=';', skiprows=3)
plt.contourf(y,x,z)
plt.show()


Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 14:11 01-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U235
 
я бы тоже...
задрало делать то что я не понимаю...
 
спасибо, гляну...
 
skiprows=3
это типа до куда надо дочитать?
файл открывается не в режиме sequence-доступа?

Код:
 
$2DW2D
Time Frequency analysis, Morlet
jet
1.0000E+01 0.0
0.0000E+00 0.0000E+00
500 100

у меня вот такой 6-строчный хидер, что бы добраться до Z
надо как-то так:
 
z=np.loadtxt('file.txt', skiprows=8)  
 
правильно? :)
и нет там никаких комментов
 
Добавлено:
 
 
гм
это что, на каждом np.loadtxt() файл переоткрывается?

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 15:02 01-09-2024 | Исправлено: akaGM, 15:14 01-09-2024
IJCuper



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
файл открывается не в режиме sequence-доступа?
...
это что, на каждом np.loadtxt() файл переоткрывается?
 

в представленном коде да, каждый раз переоткрывается.  
Но можно передать объект типа file, можно список строк передать. Гибко numpy умеет
 

Цитата:
skiprows=3
это типа до куда надо дочитать?
 

это сколько первых строк начиная от начала файла пропустить.
 

Цитата:
6-строчный хидер

наверное skiprows=6 тогда, или у вас нулевая строка пустая?  

Всего записей: 723 | Зарегистр. 07-07-2004 | Отправлено: 16:29 01-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
6 строк хидера плюс по строке на Х и на У == 8
 


как теперь этот contour plot развернуть на 90o чтобы ХУ стали нормальными? :)

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 17:02 01-09-2024 | Исправлено: akaGM, 17:16 01-09-2024
IJCuper



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
как теперь этот contour plot развернуть на 90o чтобы ХУ стали нормальными?
 

может быть так (используем магию транспонирования)

Код:
 
import numpy as np
import matplotlib.pyplot as plt
n,m=np.loadtxt('file.txt', dtype='int32', comments=';', unpack=True, max_rows=1)
x=np.loadtxt('file.txt',  comments=';',  max_rows=1, skiprows=1)
y=np.loadtxt('file.txt',  comments=';',  max_rows=1, skiprows=2)
z=np.loadtxt('file.txt',  comments=';', skiprows=3)
z=np.transpose(z)
plt.contourf(x,y,z)

plt.show()
 

Всего записей: 723 | Зарегистр. 07-07-2004 | Отправлено: 18:12 01-09-2024 | Исправлено: IJCuper, 18:12 01-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в этом простом примере работает, у меня что-то пока нет...
 
спасибо за помощь...

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 18:27 01-09-2024
IJCuper



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
 что-то пока нет

побольше подробностей не будет? текст ошибки например или еще что

Всего записей: 723 | Зарегистр. 07-07-2004 | Отправлено: 18:34 01-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
будут и подробности и демонстрация кода, если я сам не смогу справиться,
а пока ковыряюсь...

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 20:05 01-09-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
это что, на каждом np.loadtxt() файл переоткрывается?

Да, переоткрывается. Но можно и так, без переоткрытия:

Код:
from itertools import islice
import numpy as np
import matplotlib.pyplot as plt
with open('data.txt', 'r') as f:
    n,m=np.loadtxt(islice(f, 1), dtype='int32', comments=';', unpack=True, max_rows=1)
    x=np.loadtxt(islice(f, 1),  comments=';',  max_rows=1)
    y=np.loadtxt(islice(f, 1),  comments=';',  max_rows=1)
    z=np.loadtxt(f,  comments=';')
plt.contourf(x,y,z.T)
plt.show()

Кстати, если работаете с  вейвлетами, то есть неплохой пакет PyWavelet

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 20:36 01-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
plt.contourf(x,y,z.T)
Ы?

Цитата:
unpack=True
это надо выставлять когда требуется раскидать прочитанное по переменным?
 

Цитата:
то есть неплохой пакет PyWavelet
упаси господи меня связываться с питоном еще и в расчётных целях...
 
Добавлено:
 
вся визуализация шла на матлабе, надоело воровать и администрировать его на других писюках (хотя я и умею доводить в нём дело до .ехе)
вот решил залезть в террариум, всё было хорошо с 1Д графиками, теперь пришлось переделывать и surface/contour...
 
Добавлено:

Цитата:
plt.contourf(x,y,z.T)
а, транспонирование? ;)

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 20:41 01-09-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
это надо выставлять когда требуется раскидать прочитанное по переменным?
да, если переменные в одной строке, но можно считать  сначала в одну переменную, а затем раскидать по нужным переменным, например так:

Код:
size=np.loadtxt(islice(f, 1), dtype='int32', comments=';',max_rows=1)
n,m=size[0], size[1]

Вобщем это дело вкуса.

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 21:08 01-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
понятно, спасибо...
 

Цитата:
Вобщем это дело вкуса
это неверно:
чем проще, тем надёжнее, понятнее и проще всем :)

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 21:21 01-09-2024 | Исправлено: akaGM, 21:22 01-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
import numpy as np
 
z = np.zeros((10,5), dtype=float)
 
print (len(z))
почему в этом случае у меня пишется "10" ?
 
КАК:
 
1) получить размерность массива, в данном случае (10,5) ?
 
2) получить его размер в памяти 50 * sizeof(float) ?

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 16:23 02-09-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM print(z.shape)

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 16:32 02-09-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
sizeof(float)

getsizeof

Всего записей: 5032 | Зарегистр. 18-09-2018 | Отправлено: 16:35 02-09-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
print(z.nbytes)

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 16:38 02-09-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
почему в этом случае у меня пишется "10" ?
 

Потому, что у вас, фактически, массив массивов, размерность старшего и возвращает.

Всего записей: 5032 | Зарегистр. 18-09-2018 | Отправлено: 16:38 02-09-2024
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM, len - это чисто питоновская функция, показывает только одну размерность самого"внешнего" массива. В numpy ее лучше не использовать.

Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 16:42 02-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
import numpy as np
 
z = np.zeros((10,5), dtype=float)
 
print ('len      = ', len(z))
print ('shape  = ', z.shape)
print ('nbytes = ', z.nbytes)
#print ('sizeof(float) = ', getsizeof(float)) # ну и где сидит это чудо?

 
Добавлено:
 
кстати, в z.shape цифири-то как-нить доступны?
 
Добавлено:
 
ноу хау, блин
 
sizeof_float = z.nbytes / (размерности по осям из shape(x,y))
 
Добавлено:
гы
 
x = 1.0E+00
print(len(x))
 
  File "sizeof.py", line 6, in <module>
    print ('len    = ', len(x))
TypeError: object of type 'float' has no len()
 
Добавлено:
 
я *бу

Код:
import numpy as np
import sys as _sys
 
z = np.zeros((10,5), dtype=float)
print ('len    = ', len(z))
print ('shape  = ', z.shape)
print ('nbytes = ', z.nbytes)
print ('sizeof(float) = ', _sys.getsizeof(float))

выдача:
 
10
(10,5)
400
400 :О

Всего записей: 24840 | Зарегистр. 06-12-2002 | Отправлено: 17:06 02-09-2024 | Исправлено: akaGM, 17:26 02-09-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru