リストは,数値計算には全く不向きだ
>>> a = [3, 1, 2, 5, 4]
>>> print(2 * a)
[3, 1, 2, 5, 4, 3, 1, 2, 5, 4]
こんな機能,必要か?
まあ,確かに,定数で初期化した所与の長さのリストを作るときには便利かも知れないが。
>>> b = [0] * 10
>>> print(b)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> c = [1, 3, 2, 5, 1]
>>> print(a + c)
[3, 1, 2, 5, 4, 1, 3, 2, 5, 1]
print(a - c) # これはないんだ
print(a * c) # これはないんだ
print(a / c) # 当然,これもない
リストで数値計算をやろうとすると必然的に for や リスト内包表記に依存してしまう。
リストではなく,numpy の配列は使い所が広い。
>>> import numpy as np
>>> y = np.array([3, 1, 2, 5, 4])
>>> print(2 * y)
[ 6 2 4 10 8]
>>> z = np.array([5, 3, 2, 1, 4])
>>> print(y + z)
[8 4 4 6 8]
>>> print(np.outer(y, z))
[[15 9 6 3 12]
[ 5 3 2 1 4]
[10 6 4 2 8]
[25 15 10 5 20]
[20 12 8 4 16]]
>>> print(np.sqrt(z))
[2.23606798 1.73205081 1.41421356 1. 2. ]
>>> print(z.mean())
3.0
>>> print(np.mean(z))
3.0
リストでなくても,append だってできるし
>>> np.append(z, 100)
array([ 5, 3, 2, 1, 4, 100])
insert もできるし
>>> np.insert(z, 2, 200)
array([ 5, 3, 200, 2, 1, 4])
delete もできる
>>> np.delete(z, 3)
array([5, 3, 2, 4])
たぶん,その他の所でも,リストでやれることは numpy.ndarray でほとんど全部やれる
※コメント投稿者のブログIDはブログ作成者のみに通知されます