筋肉で解決しないために。

日々出会うモノに対する考察をしたり、主に以下のテーマに関して書いています。 データサイエンス/人工知能/AI/機械学習/DeepLearning/Python//数学/統計学/統計処理

numpy入門3_「arrayを添え字で参照する」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

第3回目、「arrayを添え字で参照する」です。

よろしくお願い致します。

おまじない

import numpy as np

添え字を使ったアクセス(1次元配列)

1点だけ指定

arr = np.arange(0,11)#arrayを作る
arr

>>>
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
arr[8]

>>>
8

スライスを用いて、arrayを表示

arr[1:5]

>>>
array([1, 2, 3, 4])

スライスを用いて、arrayに代入

arr[0:5]=100
arr

>>>
array([100, 100, 100, 100, 100,   5,   6,   7,   8,   9,  10])

スライスを用いてすべての要素を指定

arr = np.arange(0,11)#arrayを作る
arr = np.arange(0,11)
arr

>>>
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
slice_of_arr = arr[0:6]
slice_of_arr

>>>
array([0, 1, 2, 3, 4, 5])
slice_of_arr[:]=99
slice_of_arr

>>>
array([99, 99, 99, 99, 99, 99])
arr#最初のarrayを確認すると。

>>>
array([99, 99, 99, 99, 99, 99,  6,  7,  8,  9, 10])

添え字を使ったアクセス(2次元配列)

arr_2d = np.array(([5,10,15],[20,25,30],[35,40,45])) #arrayを作る。
arr_2d

>>>
array([[ 5, 10, 15],
       [20, 25, 30],
       [35, 40, 45]])

行の指定

arr_2d[1]

>>>
array([20, 25, 30])

行と列の指定

arr_2d[1][0] #arr[行][列] or arr[行,列]で、特定の要素を指定できる

>>>
20
arr_2d[1,0] #arr[行][列] or arr[行,列]で、特定の要素を指定できる

>>>
20

2次元arrayのスライス

arr_2d

>>>
array([[ 5, 10, 15],
       [20, 25, 30],
       [35, 40, 45]])
arr_2d[:2,1:] #arr[行][列] or arr[行,列]で、特定の要素を指定できる
#この場合では右上の2×2を指定

>>>
array([[10, 15],
       [25, 30]])

複数の行を取り出す添え字

arr_3d = np.array(([5,10,15],[20,25,30],[35,40,45],[50,55,60])) #arrayを作る。
arr_3d

>>>
array([[ 5, 10, 15],
       [20, 25, 30],
       [35, 40, 45],
       [50, 55, 60]])
arr_3d[[0,2,3]]

>>>
array([[ 5, 10, 15],
       [35, 40, 45],
       [50, 55, 60]])
arr_3d[[0,2,3],[1,1,0]]#列の指定も可能

>>>
array([10, 40, 50])
arr_3d[[3,0,2]]#順番を変えることも可能

>>>
array([[50, 55, 60],
       [ 5, 10, 15],
       [35, 40, 45]])

第4回はこちら。

watarumon.hatenablog.com

それじゃー、また。

numpy入門2_「arrayを使った計算」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」とい確認できるハンドブックのような存在を目指して。 第2回目、「arrayを使った計算」です。 よろしくお願い致します。

おまじない

import numpy as np

arrayのかけ算

arr1 = np.array([[1,2,3,4],[8,9,10,11]])# arrayを作る
arr1

>>>
array([[ 1,  2,  3,  4],
       [ 8,  9, 10, 11]])
arr1*arr1

>>>
array([[  1,   4,   9,  16],
       [ 64,  81, 100, 121]])

arrayの引き算

arr1-arr1

>>>
array([[0, 0, 0, 0],
       [0, 0, 0, 0]])

arrayの割り算

1 / arr1

>>>
array([[ 1.        ,  0.5       ,  0.33333333,  0.25      ],
       [ 0.125     ,  0.11111111,  0.1       ,  0.09090909]])

arrayの累乗(べき乗)を計算

arr1 ** 3

>>>
array([[   1,    8,   27,   64],
       [ 512,  729, 1000, 1331]])

第3回はこちら。

watarumon.hatenablog.com

それじゃー、また。

numpy入門1_「arrayを作る。」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して、 全10回前後で、numpy入門という連載を開始したいと思います。

今回は第一回目です。 よろしくお願いします。

numpyをimportする

import numpy as np

listからarrayに変換する

my_list1 = [1,2,3,4]
my_array1 = np.array(my_list1)

arrayを表示する

my_array1

>>>
array([1, 2, 3, 4])

arrayをコピーする

my_array2 = my_array1.copy()
my_array2

>>>
array([1, 2, 3, 4])

行列の大きさを指定して、多次元のarrayを作る。

arr = np.arange(9).reshape((3,3))
arr

>>>
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

複数のlistを使って、多次元のarrayを作る。

my_list1 = [1,2,3,4]
my_list2 = [11,22,33,44]
my_lists = [my_list1,my_list2]#listのlistを作成
my_array2 = np.array(my_lists)
my_array2

>>>
array([[ 1,  2,  3,  4],
       [11, 22, 33, 44]])

arrayのサイズを調べる

my_array2.shape

>>>
(2, 4)

arrayのデータ型を調べる

my_array2.dtype

>>>
dtype('int64')

すべての要素が0のarrayを作る

np.zeros(5)

>>>
array([ 0.,  0.,  0.,  0.,  0.])

すべての要素が1のarrayを作る

np.ones((5,5))

>>>
array([[ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.]])

空のarrayを作る

np.empty((3,4))#値が初期化されていないarrayを作る

>>>
array([[1.29251335e-311, 3.16202013e-322, 0.00000000e+000,
        0.00000000e+000],
       [0.00000000e+000, 1.58687284e-047, 1.73190845e+185,
        2.65249924e-032],
       [2.04047762e+184, 4.79803618e+174, 1.68674969e+160,
        1.40393544e+165]])

単位行列のarrayを作る

np.eye(5)

>>>
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  1.]])

等差数列のarrayを作る(arange関数)

np.arange(5)#等差1の配列を作る

>>>
array([0, 1, 2, 3, 4])
np.arange(5,50,2)

>>>
array([ 5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
       39, 41, 43, 45, 47, 49])

第2回はこちら。

watarumon.hatenablog.com

それじゃー、また。