Skocz do zawartości

Python - żeby coś na szybko policzyć


Behlur_Olderys

Rekomendowane odpowiedzi

Cześć,

Ze specjalną dedykacją dla @dobrychemik wklejam przykładowy kod pokazujący kilka rzeczy w pythonie, które mogą się przydać komuś, kto robi np. wykresy transmitancji filtrów :)

 

 

import numpy as np
import matplotlib.pyplot as plt

moje_dane = np.genfromtxt('wejscie.csv', delimiter=',')
print(f"Ksztalt moich danych = {moje_dane.shape}")
print(f"Pierwsze 5 elementów: {moje_dane[:5]}")
print(f"12 element 1 rząd = {moje_dane[11, 0]}")
print(f"5 element 2 rząd = {moje_dane[4, 1]}")
print(f"Ostatni element 1 rząd = {moje_dane[-1, 0]}")
print(f"Trzy ostatnie elementy 2 rzędu = {moje_dane[-3:, 1]}")
print(f"Elementy od 5 do 7 = {moje_dane[4:8]}")
długość = len(moje_dane)
print(f"Moje dane mają długość {długość}")
środek_naiwnie = długość / 2
środek_ładnie = int(długość / 2)
środek_ładniej = długość // 2

print(f"Środkowy element?\n{środek_naiwnie} - źle!\n{środek_ładnie} - lepiej\n{środek_ładniej} - też nieźle")

for element in moje_dane:
    if element[0] == 3:
        print(f"Element z x=6: {element}")
    elif element[1] == 11:
        print(f"Element z y=11: {element}")

for x, y in moje_dane:
    if x == 13:
        print(f"Element z x=13: {(x, y)}")
    if y == 65:
        print(f"Element z y=65: {[x, y]}")

parzyste_x_elementy = [element for element in moje_dane if ((element[0] % 2) == 0)]
print(f"Parzyste elementy (5 pierwszych): {parzyste_x_elementy[:5]}")
parz_x = np.array(parzyste_x_elementy)
print(f"Parzyste elementy - numpy: {parz_x[:5]}")
same_iksy = moje_dane[:, 0]
print(f"Same iksy (5 pierwszych): {same_iksy[:5]}")
same_igreki = moje_dane[:, 1]
print(f"Same igreki: {same_igreki[:5]}")
igrek_m1 = moje_dane[:, 1] - 1
print(f"Same igreki minus 1: {igrek_m1[:5]}")
minus_1 = moje_dane - np.array([0, 1])
print(f"Dane z 1 odjętą od y-ków: {minus_1[:5]}")
sin_x = np.sin(same_iksy * np.pi / 25)
print(f"Sinus x = {sin_x[:5]}")
elementy_sin = np.stack((same_iksy, sin_x), axis=-1)
print(f"x,\tsin(x*pi/25):\n{elementy_sin[:5]}")
np.savetxt("wyjście.csv", elementy_sin, delimiter=",")

# Rysowanie wykresu:

fig, ax = plt.subplots()
ax.plot(elementy_sin[:, 0], elementy_sin[:, 1], label="Sin(x)")
ax.plot(elementy_sin[:, 0], elementy_sin[:, 1]/2, color="green", label="sin(x)/2")
ax.plot(elementy_sin[:-1, 0], 4*np.diff(elementy_sin[:, 1]), color="orange", label="4*dsin(x)/dx")
ax.set(xlabel='czas (s)', ylabel='napięcie (mV)',
       title='Wykresik')
ax.grid() # chyba siatka na wykresie
plt.legend()
fig.savefig("wykresik.png")
plt.show() # bez tego nic nie narysuje
  • Lubię 2
  • Dziękuję 1
Odnośnik do komentarza
Udostępnij na innych stronach

Można i tak na to patrzeć ;) 

 

Ale wydaje mi się że @dobrychemikwłaśnie czegoś takiego potrzebuje:)

 

PS @szuu jestem mimo to pewien, że potrafisz wyobrazić sobie kilka rzeczy niesamowicie trudnych do zrobienia w excelu które są absolutnie proste w pythonie... ? ;)

 

 

 

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Dla mnie Python świetnie zastępuje Matlaba, za darmo i z większymi możliwościami, bo jest mnóstwo bibliotek służących do obliczeń z każdej praktycznie dziedziny nauki.

 

Dla bardziej zainteresowanych polecam Jupyter Notebooks, to taki Python połączony z edytorem tekstu i edytorem formuł. Obecnie najłatwiej chyba zainstalować Visual Studio Code (darmowy IDE, wszystkie platformy i języki) i w nim plugin Jupyter.
 

Można w ten sposób stworzyć dokument w którym jest opis, potem jakaś formuła matematyczna napisana za pomocą Latexa a następnie kod Python, który coś oblicza na podstawie tej teorii. Świetne narzędzie do nauki i robienia interaktywnych notatek.

  • Lubię 5
Odnośnik do komentarza
Udostępnij na innych stronach

9 minut temu, zbuffer napisał:

Dla mnie Python świetnie zastępuje Matlaba, za darmo i z większymi możliwościami, bo jest mnóstwo bibliotek służących do obliczeń z każdej praktycznie dziedziny nauki.

 

Dla bardziej zainteresowanych polecam Jupyter Notebooks, to taki Python połączony z edytorem tekstu i edytorem formuł. Obecnie najłatwiej chyba zainstalować Visual Studio Code (darmowy IDE, wszystkie platformy i języki) i w nim plugin Jupyter.
 

Można w ten sposób stworzyć dokument w którym jest opis, potem jakaś formuła matematyczna napisana za pomocą Latexa a następnie kod Python, który coś oblicza na podstawie tej teorii. Świetne narzędzie do nauki i robienia interaktywnych notatek.

dla mnie najwieksza zaleta jupytera to testowanie kodu kawalek po kawalku bez odpalania calego programu

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.