[データ解析]5.numpy


デジタルテレビ番組グループvsデジタルテレビ番組グループ
import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0., 5., 0.2)
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()

import matplotlib.pyplot as plt
t = []
p2 = []
p3 = []
for i in range(0, 50, 2):
    t.append(i/10)
    p2.append((i/10)**2)
    p3.append((i/10)**3)
plt.plot(t, t, 'r--', t, p2, 'bs', t, p3, 'g^')
plt.show()

1.numpyライブラリ


-平方根

import numpy as np
print(np.sqrt(2))

-パイ

import numpy as np
print(np.pi)
print(np.sin(0))
print(np.cos(np.pi))

-乱数

import numpy as np
a = np.random.rand(5)
print(a)
print(type(a))
  • numpy.标题:N-Dimension,n次元
    」()():うっかり
  • import numpy as np
    print(np.random.choice(6,10))
    #[1 2 5 2 5 4 2 5 4 3]
    」choice(n,m):0からn-1の数字をm回繰り返し選択
    import numpy as np
    print(np.random.choice(10, 6, replace=False))
    #[0 6 1 5 4 8]
    」replace=Falseを重複値を抽出しないように設定
    import numpy as np
    print(np.random.choice(6, 10, p=[0.1, 0.2, 0.3, 0.2, 0.1, 0.1]))
    #[0 4 2 2 2 2 4 2 1 1]
    」p:確率設定
    0は0.1、1は0.2、2は0.3などの確率で設定できます.

    -図形描画


    1)ヒストグラム

    import numpy as np
    import matplotlib.pyplot as plt
    
    dice = np.random.choice(6, 10)
    plt.hist(dice, bins=6)
    plt.show()
    import numpy as np
    import matplotlib.pyplot as plt
    
    dice = np.random.choice(6, 1000000, p=[0.1,0.2,0.3,0.2,0.1,0.1]) # 설정한 확률에 따라 값들 출력됨
    plt.hist(dice, bins=6)
    plt.show()
  • 確率を設定して10万回実行
  • 2)気泡図で示す

    import numpy as np
    import matplotlib.pyplot as plt
    x = np.random.randint(10, 100, 100)
    y = np.random.randint(10, 100, 100)
    size = np.random.rand(100) * 100
    
    plt.scatter(x, y, s=size, c=x, cmap='jet', alpha=0.7)
    plt.colorbar()
    plt.show()
  • np.random.randint(10, 100, 100):200回抽出することを示す[10100]
  • np.random.rand(n):0から1の間のn個のエラーを作成
  • np.random.randint(a,b,n):a以上b以下n個の整数.
  • import matplotlib.pyplot as plt
    import random
    
    x = []
    y = []
    size = []
    
    for i in range(200):
        x.append(random.randint(10,100))
        y.append(random.randint(10,100))
        size.append(random.randint(10,100))
        
    plt.scatter(x, y, s=size, c=x, cmap='jet', alpha=0.7)
    plt.colorbar()
    plt.show()
  • numpy未使用コード
  • - numpy array

  • darray:numpy配列
  • import numpy as np
    a = np.array([1,2,3,4])
    print(a)
    #[1 2 3 4]
    print(a[1], a[-1])
    # 2 4
    print(a[1:]
    #[2 3 4]
  • numberfi配列リストにカンマがない
  • インデックス、スライド可能
  • データは1種類しか保存できません
  • import numpy as np
    a = np.array([1,2,'3',4])
    print(a) #['1' '2' '3' '4'] 문자열로 모두 치환됨
  • アレイの初期化
    1)0()、one()、yee():0と1のみでアレイ
  • を初期化
    import numpy as np
    a = np.zeros(10) # 0으로 이루어진 크기가 10인 배열 생성
    b = np.ones(10) # 1로 이루어진 크기가 10인 배열 생성
    c = np.eye(3) # 3X3행렬 생성
    print(a) #[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
    print(b) #[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
    print(c) 
    #[[1. 0. 0.]
    #[0. 1. 0.]
    #[0. 0. 1.]]
    2)arangge()の使用:特定の間隔の値を生成する
    import numpy as np
    print(np.arange(3)) #[0 1 2] n-1한 값까지로 배열 생성
    print(np.arange(3,7) #[3 4 5 6] 첫번째 숫자부터 두번째 숫자-1까지 배열 생성
    print(np.arange(3,7,2)) #[3 5] 일정한 간격을 두고 배열 생성
    3)linspace()の使用:特定の数の区間で区切られた値を生成する
    import numpy as np
    a = np.arange(1, 2, 0.1) # 1부터 2미만까지 0.1 간격으로 실수 생성
    b = np.linspace(1, 2, 11) # 1부터 2까지 11개 구간으로 나눈 실수 생성
    print(a) #[1.  1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9]
    print(b) #[1.  1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2. ]
    import numpy as np
    a = np.arange(-np.pi, np.pi, np.pi/10)
    b = np.linspace(-np.pi, np.pi, 20)
    print(a)
    print(b)

    -アレイのさまざまな用途

  • 適用演算
  • import numpy as np
    a = np.zeros(10) + 5
    print(a) #[5. 5. 5. 5. 5. 5. 5. 5. 5. 5.]
  • 適用関数
  • import numpy as np
    a = np.linspace(1, 2, 11)
    print(np.sqrt(a)) # [1. 1.04880885 1.09544512 1.14017543 1.18321596 1.22474487 1.26491106 1.30384048 1.34164079 1.37840488 1.41421356]
  • アレイに演算または関数を適用すると、アレイ内のすべての値が同時に計算されます
  • import numpy as np
    import matplotlib.pyplot as plt
    a = np.arange(-np.pi, np.pi, np.pi/100)
    plt.plot(a, np.sin(a))
    plt.show()
  • pi値生成特定範囲
  • 範囲内の数字をpi値を100で割った間隔で配列aに格納
  • sin()関数をaに格納されたすべての値に適用し、グラフィック
  • として表す
    import numpy as np
    import matplotlib.pyplot as plt
    a = np.arange(-np.pi, np.pi, np.pi/100)
    
    plt.plot(a, np.sin(a))
    plt.plot(a, np.cos(a))
    plt.plot(a+np.pi/2, np.sin(a)) # sin그래프 평형 이동
    plt.show()

    -マスク(mask)

  • 条件を満たすデータのみを選択的に格納
  • import numpy as np
    a = np.arange(-5, 5)
    print(a<0) #[ True  True  True  True  True False False False False False]
    print(a[a<0]) # 마스크 적용
    #[-5 -4 -3 -2 -1]
    
    mask1 = abs(a) > 3 #절댓값 이용
    print(a[mask1]) #[-5 -4  4]
    
    mask1 = abs(a) > 3
    mask2 = abs(a) % 2 == 0
    
    print(a[mask1+mask2]) # 둘 중 조건이 하나라도 참인 경우
    #[-5 -4 -2  0  2  4]
    print(a[mask1*mask2]) # 두 개 모두 참인 경우
    #[-4  4]

    バブル図を描く

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.random.randint(-100, 100, 1000)
    y = np.random.randint(-100, 100, 1000)
    size = np.random.randint(3) * 100
    
    mask1 = abs(x) > 50
    mask2 = abs(y) > 50
    x = x[mask1+mask2]
    y = y[mask1+mask2]
    
    plt.scatter(x,y,s=size,c=x,cmap='jet',alpha=0.7)
    plt.colorbar()
    plt.show()