裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

numpy.ndarray をもっと使おう

2020年12月17日 | ブログラミング

リストは,数値計算には全く不向きだ

>>> 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 でほとんど全部やれる

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 奇数リストの生成 | トップ | 式の右辺の if - else (Python) »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事