numpyの一般的な使い方
8828 ワード
numpy
Anacondahttpsのインストール
ショートカットキー
1 D配列
配列間でベクトル演算が可能
ベクトル演算はいちいち演算しなければならない
pythonでは、配列がリストであり、リスト間の演算をベクトル演算と呼び、2つのリストの要素の数が同じでなければなりません.そうしないと、エラーが発生します.
numpyの基本プロパティ配列要素のデータ型 配列要素の個数 配列の次元数、1次元配列か2次元配列か 配列の次元サイズは、 をメタグループとして表す.配列の転置(二次元配列以上の配列のデータ構造の行と列を合わせる) .
numpyを作成するいくつかの方法
array
リストを配列に変換整数型の配列を作成する 浮動小数点タイプの配列を作成する 浮動小数点型の配列を整数型の配列 に変換する.
arrange
range関数と同様にnumpyでarrangeを使用します 0,1,2からなる配列 を作成するは3から7の間の数からなる配列を作成し、ステップ長は2 である.
linspace
一定範囲内の数を配列設定の長さに基づいて平均除算して配列内の各要素を得、デフォルトで50部に分けるは2から10の間の数からなる配列を作成し、配列長は50 である.は2から10の間の数を作成し、配列の長さは5であり、10 を含むことはできない.
zeros
配列の長さに応じて、すべて0の浮動小数点数の配列を作成します.
ones
配列の長さに応じてすべて1の浮動小数点数の配列を作成
reshape
1 D配列を多次元配列に変換
索引とスライス
配列と定数の演算
同等サイズ配列間の演算
配列のインデックス
配列のスライス
ブール索引
取得配列の5より大きい数
5より大きいすべての偶数を取り出します
花インデックス
取得インデックスが2,4,8に対応する具体的な値
汎用関数
絶対値をとる
ルートをつける
値を上げる
四捨五入
小数点以下は0
整数と小数を分ける
データが数字ではないかどうかを判断する
2つの配列の中の最大値を取って新しい配列を構成します
平均値をとる
ほうさを取る
ツールバーの
乱数生成は、0から1の間の乱数 を生成する.は、3行2列の0から1の乱数の配列 を生成する.は、0から2以内の10個の整数の配列 を生成する.は、2から5以内の10個の整数の配列 を生成する.は、5以内の3つの整数からなる配列 を生成する.所与の形状はランダム配列 を生成する.
import numpy as np
shop_price = [30, 20, 15, 40]
shop_num = [2, 3, 1, 4]
Anacondahttpsのインストール
ショートカットキー
, esc , b
, esc , a
, esc , dd
markdown , esc , m, markdown
shift + enter:
ctrl + enter:
1 D配列
>>> np_shop_price = np.array(shop_price)
>>> np_shop_price
array([30, 20, 15, 40])
>>> np_shop_num = np.array(shop_num)
>>> np_shop_num
array([2, 3, 1, 4])
配列間でベクトル演算が可能
>>> np_shop_price = np.array(shop_price)
>>> np_shop_num = np.array(shop_num)
>>> np_shop_price * np_shop_num
array([ 60, 60, 15, 160])
>>> np.sum(np_shop_price * np_shop_num)
295
ベクトル演算はいちいち演算しなければならない
pythonでは、配列がリストであり、リスト間の演算をベクトル演算と呼び、2つのリストの要素の数が同じでなければなりません.そうしないと、エラーが発生します.
>>> a1 = np.array([1,2,3,4])
>>> a2 = np.array([1,2,3])
>>> a1*a2
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in
----> 1 a1*a2
ValueError: operands could not be broadcast together with shapes (4,) (3,)
numpyの基本プロパティ
>>> a1 = np.array([1,2,3,4])
>>> a1
array([1, 2, 3, 4])
>>> a2 = np.array([[1,2,3,4],[5,6,7,8]])
>>> a2
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> a1.dtype
dtype('int32')
>>> a1.size
4
>>> a2.size
8
>>> a1.ndim
1
>>> a2.ndim
2
>>> a1.shape
(4,)
>>> a2.shape ( , )
(2, 4)
>>> a2
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> a2.shape ( , )
(2, 4)
>>> a2.T ( , )
array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])
numpyを作成するいくつかの方法
array
リストを配列に変換
>>> a3 = np.array([1,2,3,4])
>>> a3
array([1, 2, 3, 4])
>>> a3 = np.array([1,2,3,4], dtype='float')
>>> a3
array([1., 2., 3., 4.])
>>> a3.astype('int') int
array([1, 2, 3, 4])
arrange
range関数と同様にnumpyでarrangeを使用します
>>> np.arange(3)
array([0, 1, 2])
>>> np.arange(3,7,2)
array([3, 5])
linspace
一定範囲内の数を配列設定の長さに基づいて平均除算して配列内の各要素を得、デフォルトで50部に分ける
>>> np.linspace(2,10)
array([ 2. , 2.16326531, 2.32653061, 2.48979592, 2.65306122,
2.81632653, 2.97959184, 3.14285714, 3.30612245, 3.46938776,
3.63265306, 3.79591837, 3.95918367, 4.12244898, 4.28571429,
4.44897959, 4.6122449 , 4.7755102 , 4.93877551, 5.10204082,
5.26530612, 5.42857143, 5.59183673, 5.75510204, 5.91836735,
6.08163265, 6.24489796, 6.40816327, 6.57142857, 6.73469388,
6.89795918, 7.06122449, 7.2244898 , 7.3877551 , 7.55102041,
7.71428571, 7.87755102, 8.04081633, 8.20408163, 8.36734694,
8.53061224, 8.69387755, 8.85714286, 9.02040816, 9.18367347,
9.34693878, 9.51020408, 9.67346939, 9.83673469, 10. ])
>>> np.linspace(2,10,num=5)
array([ 2., 4., 6., 8., 10.])
>>> np.linspace(2,10,num=5,endpoint=False)
array([2. , 3.6, 5.2, 6.8, 8.4])
zeros
配列の長さに応じて、すべて0の浮動小数点数の配列を作成します.
>>> np.zeros(5)
array([0., 0., 0., 0., 0.])
ones
配列の長さに応じてすべて1の浮動小数点数の配列を作成
>>> np.ones(5)
array([1., 1., 1., 1., 1.])
reshape
1 D配列を多次元配列に変換
>>> a4 = np.arange(10)
>>> a4
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a4.reshape(2,5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> a4.reshape(5,2)
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> a4.reshape(3,3)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in
----> 1 a4.reshape(3,3)
ValueError: cannot reshape array of size 10 into shape (3,3)
索引とスライス
配列と定数の演算
>>> a4
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a5 = a4*3
>>> a5
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
>>> li = [1, 2, 3, 4]
>>> li*3
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>> a5+3
array([ 3, 6, 9, 12, 15, 18, 21, 24, 27, 30])
>>> a5
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
同等サイズ配列間の演算
>>> a7 = np.array([1,2,3,4])
>>> a8 = a5 = np.array([1,2,3,4])
>>> a7*a8
array([ 5, 12, 21, 32])
配列のインデックス
>>> a5[2]
6
>>> a6 = a5.reshape(2,5)
>>> a6
array([[ 0, 3, 6, 9, 12],
[15, 18, 21, 24, 27]])
>>> a6[0,2]
6
>>> a6[0][2]
6
配列のスライス
>>> a5
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
>>> a5[3:6]
array([ 9, 12, 15])
>>> a6
array([[ 0, 3, 6, 9, 12],
[15, 18, 21, 24, 27]])
>>> a6[:,2:4]
array([[ 6, 9],
[21, 24]])
ブール索引
>>> a5
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
取得配列の5より大きい数
>>> a5>5
array([False, False, True, True, True, True, True, True, True,
True])
5より大きいすべての偶数を取り出します
>>> a5[(a5>5) & (a5%2==0)]
>>> array([ 6, 12, 18, 24])
花インデックス
>>> a5
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
取得インデックスが2,4,8に対応する具体的な値
>>> a5[[2,4,8]]
array([ 6, 12, 24])
汎用関数
絶対値をとる
>>> np.abs(-2)
2
ルートをつける
>>> np.sqrt(4)
2.0
値を上げる
>>> np.ceil(3.2)
4.0
np.ceil(3.8)
4.0
四捨五入
>>> np.rint(3.2)
3.0
>>> np.rint(3.7)
4.0
小数点以下は0
>>> np.trunc(1.5)
1.0
整数と小数を分ける
>>> np.modf(12.22)
(0.22000000000000064, 12.0)
>>> np.modf([0,3.5])
(array([0. , 0.5]), array([0., 3.]))
データが数字ではないかどうかを判断する
>>> np.isnan(3)
False
2つの配列の中の最大値を取って新しい配列を構成します
>>> np.maximum([2,3,4],[1,5,2])
array([2, 5, 4])
平均値をとる
>>> a5
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
>>> np.mean(a5)
13.5
ほうさを取る
((0-13.5)^2+(3-13.5^2)+...+(27-13.5)^2)/10 ===>
>>> a5
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
>>> np.var(a5)
74.25
ツールバーの
>>> np.sort(a5)
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
乱数生成
>>> np.random.rand()
0.41127690452609
>>> np.random.rand(3,2)
array([[0.25495748, 0.4505048 ],
[0.70361618, 0.37524951],
[0.19785526, 0.3860836 ]])
>>> np.random.randint(2,size=10)
array([1, 1, 0, 1, 1, 0, 0, 0, 0, 1])
>>> np.random.randint(2,5,size=10)
array([2, 4, 4, 2, 4, 4, 3, 4, 2, 3])
>>> np.random.choice(5,3)
array([4, 2, 4])
>>> np.random.uniform(-1,0,10)
array([-1.86027339e-01, -5.65761107e-01, -7.38784743e-01, -9.64964081e-01,
-3.88713618e-01, -5.17054693e-01, -5.46899721e-01, -9.90719601e-01,
-7.09073463e-04, -5.16624999e-01])