LoginSignup
0
0

More than 1 year has passed since last update.

【備忘録】numpyのarrayについて

Posted at

numpyのarrayについてまとめました。

arrayの生成

リスト

import numpy as np
a = np.array([1, 2, 3, 4])
a
#array([1, 2, 3, 4])

タプルも可

np.array((2, 3, 5, 7))
#array([2, 3, 5, 7])

二重にネストした配列

a = np.array([[11, 12, 13], [22, 33, 44]])
a
"""
array([[11, 12, 13],
       [22, 33, 44]])
"""

リストの要素にarrayを入れても大丈夫

a = np.array([1, 1, 2, 3])
b = np.array([a, [5, 8, 13, 21]])
b
"""
array([[ 1,  1,  2,  3],
       [ 5,  8, 13, 21]])
"""

arange()で公差を指定して等差数列をつくる

#np.arange(start, stop, step)
a = np.arange(100, 150, 13)
a
#array([100, 113, 126, 139])

linspace()で要素数を指定して等差数列をつくる。start、stop、num(要素数)に応じた公差が自動的に算出される。

#np.linspace(start, stop, num(要素数))
a = np.linspace(0, 10, 5)
a
#array([ 0. ,  2.5,  5. ,  7.5, 10. ])

全て0のarray

np.zeros(4)
#array([0., 0., 0., 0.])

全て1のarray

np.ones(4)
#array([1., 1., 1., 1.])

zeros()、ones()にタプルを入れると多次元のarrayが返ってくる

np.zeros((4,4))
"""
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
"""

np.ones((2,3))
"""
array([[1., 1., 1.],
       [1., 1., 1.]])
"""

空の要素のarrayをつくる。空と0は違う

np.empty((3,3))
"""
array([[3.69634383e-316, 1.77863633e-322, 0.00000000e+000],
       [0.00000000e+000, 1.41370663e+190, 1.76009029e-076],
       [2.10653491e-052, 4.26881386e-090, 2.90130388e-057]])
"""

単位行列をつくる

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.]])
"""

要素の並びはそのままにして、次元や縦横の要素数をかえる

a = np.arange(0, 15, 1)
a
#array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])


a.reshape(3, 5)
"""
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14]])
"""


a.reshape(3, 5)
"""
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
"""

乱数

np.random.random((4, 4))
"""
array([[0.57205309, 0.23118043, 0.57137678, 0.5490131 ],
       [0.86643899, 0.44057519, 0.11017304, 0.47788537],
       [0.00391567, 0.74101721, 0.8236279 , 0.45663018],
       [0.24658771, 0.48127278, 0.7861596 , 0.75493337]])
"""

各成分を関数で指定

def f(i, j):
    return i + j

np.fromfunction(f, (4, 3))
"""
array([[0., 1., 2.],
       [1., 2., 3.],
       [2., 3., 4.],
       [3., 4., 5.]])
"""

要素、行、列を取り出す

インデックスで指定

a = np.arange(0, 12, 1).reshape(3,4)
a
"""
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
"""


a[0, 2]
#2

スライスで指定

a[1:2]#1行目から2行目(終わりは含まない)
#array([[4, 5, 6, 7]])


a[1:3, 0:3]#1行目から3行目、0列目から3列目まで
"""
#array([[ 4,  5,  6],
       [ 8,  9, 10]])
"""


a[2, :]#行だけ取得
#array([ 8,  9, 10, 11])


a[:, 3]#列だけ取得
#array([ 3,  7, 11])

arrayの属性

属性ndimで次元数を整数で取得できる。

a = np.arange(0, 12, 1).reshape(3,4)
a
"""
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
"""

a.ndim
#2

type(a.ndim)
#int

属性shapeで各次元のサイズをタプルで取得できる。

a.shape
#(3, 4)

type(a.shape)
#tuple

属性sizeで全要素数を整数で取得できる。

a.size
#12

type(a.size)
#int
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0