Last updated: 2024/03/07
m = list(range(10)) m.append(-10) print(m) m.insert(2, 11) print(m) >> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -10] [0, 1, 11, 2, 3, 4, 5, 6, 7, 8, 9, -10]
m = [9, 7, 1, 6, 2] m.remove(7) print(m) >>
[9, 1, 6, 2]
m = [9, 7, 1, 6, 2] del m[2]#ここのdelと上のremoveとの違いに注意 print(m) >>
[9, 7, 6, 2]
m = [9, 7, 1, 6, 2, 5, 3] print(m[0:6:2]) print(m[0::2]) print(m[-1::-1]) >> [9, 1, 2] [9, 1, 2, 3] [3, 5, 2, 6, 1, 7, 9]
m = [9, 7, 1, 6, 2, 5, 3] m.sort() print(m) m.sort(reverse=True) print(m) >> [1, 2, 3, 5, 6, 7, 9] [9, 7, 6, 5, 3, 2, 1]
m = [9, 7, 1, 6, 2, 5, 3] print(max(m), min(m), sum(m)/len(m)) >> 9 1 4.714285714285714
m = [9, 7, 1, 6, 2, 5, 3] print(m.index(6)) >> 3
m = [9, 7, 1, 6, 2, 5, 3] n = [x*2 for x in m] print(n) >> [18, 14, 2, 12, 4, 10, 6]
「行列の操作」で紹介したように、もともとpythonでは行列の操作ができるが、もっと効率的な操作をするため(特に行列が非常に大きい、あるいは2次元以上の行列の場合)、numpy (numerical python)を使ったほうが便利です。
import numpy as np #いつもimportする必要がある(以下省略) m = np.arange(10) n = np.array([9, 7, 1, 6, 2, 5, 3]) print(m) print(n) m = np.arange(0, 1, 0.1) n = np.linspace(0, 1, 10) print(m) print(n) >> [0 1 2 3 4 5 6 7 8 9] [9 7 1 6 2 5 3] [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9] [0. 0.11111111 0.22222222 0.33333333 0.44444444 0.55555556 0.66666667 0.77777778 0.88888889 1. ]
n = np.array([9, 7, 1, 6, 2, 5, 3]) print(n.max(), n.min(), n.mean(), n.argmax(), n.argmin(), np.median(n)) >> 9 1 4.714285714285714 0 2 5.0
n = np.array([9, 7, 1, 6, 2, 5, 3]) indexMat = n.argsort() print(indexMat) >> [2 4 6 5 3 1 0]
n = np.zeros(10) print(n) >> [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
n = np.zeros((3, 4)) #2重括弧 print(n) >> [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
n = np.arange(12) m = np.reshape(n, (3, 4)) print(m) print(m[0, 2], m[1, 0]) m[2, 3] += 1 print(m) >> [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] 2 4 [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 12]]
#pythonの行列とnumpy行列の操作方法は違うので、時々互いに変換する必要がある m = [] m.append(3) print(m) m = np.array(m) m = np.append(m, 8) print(m) m = list(m) m.append(10) print(m) >> [3] [3 8] [3, 8, 10]
#numpy行列とpython行列との重要な違い n = np.array([9, 7, 1]) m = n+2 print(m) m = n*2 print(m) n = list(n) m = n*2 print(m) >> [11 9 3] [18 14 2] [9, 7, 1, 9, 7, 1]
numpyのできることは非常に多いです。今後具体的な問題に合わせて少しずつ紹介します。
興味があれば、numpyのホームページを見てください:https://numpy.org/
(第2回で使っていたファイルpython02-2.txtを使います。)
1.ファイルpython02-2.txtに1万行のデータがあります。各行10個の数字の平均値を計算すれば、1万個の平均値があります。その中に、最大の平均値は何ですか?そして、この平均値は何行目にありますか?
2.ファイルpython02-2.txtの各行の10個の数字の中に、最大値と最小値を除いて、残りの8個の数字の平均値をこの行の平均値にする。これで、1万行の最大の平均値は何ですか?そして、この平均値は何行目にありますか?
3.ファイルpython02-2.txtに10万個の数字があります。以下の各範囲にある数字の個数を求めよ。
[0, 1000), [1000, 2000), [2000, 3000), …, [9000, 10000)
*[0, 1000) というのは 0<=x<1000