メモ > 技術 > プログラミング言語: Python > Python
Python
■入門
以下が詳細で解りやすい。
Python入門 - @IT
https://www.atmarkit.co.jp/ait/series/12963/
Pythonプログラミング入門 - Pythonプログラミング入門 documentation
https://utokyo-ipp.github.io/
■環境構築
主にVSCodeではじめるPython開発環境構築ガイド | DevelopersIO
https://dev.classmethod.jp/articles/python-vscode-plugin/
■応用
Pythonのアンダースコア( _ )を使いこなそう! - LSC PSD - Medium
https://medium.com/lsc-psd/pythonic%E8%89%B2%E3%80%85-python%E3%81%AE%E3%82%A2%E3%83%B3%E3%83%80%E3%...
AIエンジニアが気をつけたいPython実装のノウハウ・コツまとめ - Qiita
https://qiita.com/sugulu/items/c0e8a5e6b177bfe05e99
【Python】いい書き方と悪い書き方を知って中級者を目指す - Qiita
https://qiita.com/_masa_u/items/b21c493a82e8aba8993f
Pythonのオブジェクト指向プログラミングを完全理解 - Qiita
https://qiita.com/kaitolucifer/items/926ed9bc08426ad8e835
【2020年新人研修資料】ナウでヤングなPython開発入門 - Speaker Deck
https://speakerdeck.com/stakaya/2020nian-xin-ren-yan-xiu-zi-liao-nauteyankunapythonkai-fa-ru-men
朝飯前に学べる!便利なPythonのヒント100選【前編】 - Qiita
https://qiita.com/baby-degu/items/05cf809d4d992923020d
朝飯前に学べる!便利なPythonのヒント100選【後編】 - Qiita
https://qiita.com/baby-degu/items/532bea7be058c35f61a8
全てがTypeScriptで動く「クラウド郵便 atena」を支える技術スタック
https://zenn.dev/n1nc/articles/atena-system-architecture
データ分析の基礎 - Qiita
https://qiita.com/wooooo/items/24d1a4d6be5ab7bf023f
Pythonのパッケージ管理の中級者の壁を超える stapy#98 - Speaker Deck
https://speakerdeck.com/vaaaaanquish/pythonnopatukeziguan-li-nozhong-ji-zhe-nobi-wochao-eru-stapy-nu...
並列処理がとても苦手なPythonはプロセスを分けよう コードを書く時に意識したい2つのTipsと2つの落とし穴 - ログミーTech
https://logmi.jp/tech/articles/329470
【AtCoder】Pythonで競プロをするときの注意点まとめ【競技プログラミング】 #Python - Qiita
https://qiita.com/kemuniku/items/1f1537e1df2ac8180d9b
■数値を文字列と結合して表示
a = 10
print('a = ' + str(a))
■科学的表記法を使って数値を表現
Pythonコード内に「1e-3」のような表記が現れることがある。
これは科学的表記法を使って数値を表現したもの。
「1e-3」は「1 * 10^-3」と同じで、その結果は 0.001 となる。
1e0 = 1
1e1 = 10
1e-1 = 0.1
1e-2 = 0.01
1e-3 = 0.001
この表記法は、非常に大きな数値や非常に小さな数値を簡潔に表現するために使用される。
■配列の計算
以下は計算できず、「TypeError: can only concatenate list (not "int") to list」のエラーになる。
def double(x):
return x + 1
numbers = [1, 2, 3]
print(double(numbers))
以下のようにmapを使うと、それぞれの計算結果「[2 3 4]」を得られる。
def double(x):
return x + 1
numbers = [1, 2, 3]
print(list(map(double, numbers)))
以下のようにnumpyを使っても、それぞれの計算結果「[2 3 4]」を得られる。
import numpy as np
def double(x):
return x + 1
numbers = np.array([1, 2, 3])
print(double(numbers))
また以下のようにすると、計算結果「[5 7 9]」を得られる。
import numpy as np
def add(a, b):
return a + b
a_numbers = np.array([1, 2, 3])
b_numbers = np.array([4, 5, 6])
print(add(a_numbers, b_numbers))
Pythonのmap()でリストの要素に関数・処理を適用 | note.nkmk.me
https://note.nkmk.me/python-map-usage/
PythonのNumPy配列の数値演算のやり方まとめ | HEADBOOST
https://www.headboost.jp/python-numpy-array-calculations/
■配列の内容をすべて表示
map_result = map(str, targets)
result = ', '.join(map_result)
print('[' + result + ']')
■配列の要素数を表示
print(len(targets))
■行列の計算
np.dot() によって行列の計算ができるが、与える配列の次元によって挙動が変わる。
以下のとおりAとBが1次元配列の場合、以下のように計算される。
これは内積を求めている。
import numpy as np
A = np.array([1, 2, 3])
B = np.array([2, 4, 6])
result = np.dot(A, B)
# 1*2 + 2*4 + 3*6 = 28
print(result)
# 28
AとBが2次元配列の場合、以下のように計算される。
これは行列積を求めている。
import numpy as np
A = np.array([[1,1], [2,2], [3,3]])
B = np.array([[1, 2], [3, 4]])
result = np.dot(A, B)
# A * B = C
# |1 1| * |1 2| = |(1*1 + 1*3) (1*2 + 1*4)| = |4 6|
# |2 2| |3 4| |(2*1 + 2*3) (2*2 + 2*4)| |8 12|
# |3 3| |(3*1 + 3*3) (3*2 + 3*4)| |12 18|
print(result)
# [[ 4 6]
# [ 8 12]
# [12 18]]
AとBのどちらかがスカラの場合、以下のように計算される。
これは積を求めている。
import numpy as np
A = np.array([[1,1], [2,2], [3,3]])
B = 5
result = np.dot(A, B)
# A * B = C
# |1 1| * 5 = |(1*5) (1*5)| = | 5 5|
# |2 2| |(2*5) (2*5)| |10 10|
# |3 3| |(3*5) (3*5)| |15 15|
print(result)
# [[ 5 5]
# [10 10]
# [15 15]]
Aが2次元配列でBが1次元配列の場合、以下のように計算される。
import numpy as np
A = np.array([[1,1], [2,2], [3,3]])
B = np.array([7, 8])
result = np.dot(A, B)
# A * B = result
# |1 1| * |7 8| = |1*7 + 1*8| |15|
# |2 2| |2*7 + 2*8| = |30|
# |3 3| |3*7 + 3*8| |45|
print(result)
# [15 30 45]
numpy.dot の挙動 #Python - Qiita
https://qiita.com/ao_log/items/64768b67153e8fb6820b
■map
【Pythonステップアップ!】高階関数mapの便利な使い方 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
https://www.sejuku.net/blog/24759
■lambda
Pythonのlambdaって分かりやすい - Qiita
https://qiita.com/nagataaaas/items/531b1fc5ce42a791c7df
■画像
PythonでPowerPointの各ページを画像ファイルにする - Qiita
https://qiita.com/natsutan/items/2487e24fe3f31569b40d
■クロスプラットフォームアプリ
Pythonだけでクロスプラットフォームなアプリを作れるFletについて - Qiita
https://qiita.com/NasuPanda/items/48849d7f925784d6b6a0
■ゲーム
「ゲーム制作するなら、これだけは覚えておいたほうがいい」 プログラミングする上で重要な「対数」の考え方 - ログミーTech
https://logmi.jp/tech/articles/326705
Pythonなら3Dゲームも作れる!まずは空間にモノを置いてみよう | 日経クロステック(xTECH)
https://xtech.nikkei.com/atcl/nxt/column/18/02075/052400001/
■数学
数学×Pythonプログラミング入門 - @IT
https://atmarkit.itmedia.co.jp/ait/series/24243/
統計・機械学習の理論を学ぶ手順 - Qiita
https://qiita.com/kueda_cs/items/28008db6491c71ac5659
数学を楽しみながら独学できる本、究極の5冊 | 独学大全 | ダイヤモンド・オンライン
https://diamond.jp/articles/-/301387
■機械学習
Pythonでニューラルネットワークを書いてみよう:ニューラルネットワーク入門 - @IT
https://atmarkit.itmedia.co.jp/ait/articles/2202/09/news027.html
みんな、とにかくオセロAIを作るんだ - Qiita
https://qiita.com/Nyanyan_Cube/items/1839732d7bdf74caff21
機械学習が独学できる日本語Youtube難易度別まとめ - Qiita
https://qiita.com/fujimr_19xx/items/f85d08a260ef7e0df655
モナリザがトランプ大統領のように動き出すFirst Order Motion Modelを試してみる - Qiita
https://qiita.com/jun40vn/items/722bd4675246eb7eac46
第1回 初めてのニューラルネットワーク実装、まずは準備をしよう ― 仕組み理解×初実装(前編):TensorFlow 2+Keras(tf.keras)入門 - @IT
https://atmarkit.itmedia.co.jp/ait/articles/1909/19/news026.html
Pythonで作る人工生命 | 日経クロステック(xTECH)
https://xtech.nikkei.com/atcl/nxt/column/18/01996/
【5分で解説】AI進化のきっかけになったTransformerとは!?Attention層とは?|スタビジ
https://toukei-lab.com/transformer