配列に要素を追加する
配列にストアするデータは同じ型
numpy.append(arr, values, axis=None)
axisがNoneであれば、出力はフラット化(1次元配列)されます。
>>> import numpy as np
>>> np.append([1,2,3],[[4,5,6],[7,8,9]])
array([1, 2, 3, ..., 7, 8, 9])
配列を結合する
配列にストアするデータは同じ型。
import numpy as np
output = np.c_[data,newdata]
ndarrayの基本操作
ndarray は、N-Dimensional arrays.のことです。listクラスより使いやすい配列のクラスとしてNumPyが提供するN次元配列のクラスです。
>>>
>>> import numpy as np
>>> a = np.array([0,0.5,1.0,1.5,2.0])
>>> a
array([0. , 0.5, 1. , 1.5, 2. ])
>>> type(a)
<class 'numpy.ndarray'>
>>> a = np.array(['a','b','c'])
>>> a
array(['a', 'b', 'c'], dtype='<U1')
>>> a = np.arange(2,20,2)
>>> a
array([ 2, 4, 6, 8, 10, 12, 14, 16, 18])
>>> a = np.arange(8,dtype=np.float)
<stdin>:1: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>>> a = np.arange(8,dtype=float)
>>> a
array([0., 1., 2., 3., 4., 5., 6., 7.])
>>> a[4:]
array([4., 5., 6., 7.])
>>> a[5:]
array([5., 6., 7.])
>>> a[:5]
array([0., 1., 2., 3., 4.])
>>> a.sum()
28.0
>>> a.mean()
3.5
>>> a.std()
2.29128784747792
>>> a.cumsum()
array([ 0., 1., 3., 6., 10., 15., 21., 28.])
>>>
関数 | |
np.arange() | |
np.sum() | |
np.mean() | |
np.std() | |
np.cumsum() | |
np.exp() | |
np.sqrt() |
多次元配列
>>>
>>> b = np.array([a,a*2])
>>> b
array([[ 0., 1., 2., 3., 4., 5., 6., 7.],
[ 0., 2., 4., 6., 8., 10., 12., 14.]])
>>> b[0]
array([0., 1., 2., 3., 4., 5., 6., 7.])
>>> b[0,2]
2.0
>>> b[:,2]
array([2., 4.])
>>> b.sum()
84.0
>>> b.sum(axis=0)
array([ 0., 3., 6., 9., 12., 15., 18., 21.])
>>> b.sum(axis=1)
array([28., 56.])
>>>
多次元配列を初期化して生成します。
>>> c = np.ones((2,3,4), dtype='i', order='C')
>>> c
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]]], dtype=int32)
>>> d = np.zeros_like(c, dtype='f', order='C')
>>> d
array([[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]], dtype=float32)
>>> d = np.zeros_like(c, dtype=np.dtype('float64'), order='C')
>>> d
array([[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]])
>>> d = np.zeros_like(c, dtype='f', order='C')
>>> d
array([[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]]], dtype=float32)
>>> e = np.empty((2,3,2))
>>> e
array([[[0., 0.],
[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.],
[0., 0.]]])
>>> f = np.empty_like(c)
>>> f
array([[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]], dtype=int32)
>>>
dtype データ型オブジェクト
'?' | 真、または 偽 |
'b' | 符号つきバイト |
'B' | 符号なしバイト |
'i' | 符号つき整数 |
'u' | 符号なし整数 |
'f' | 浮動小数点 |
'c' | 複素数 浮動小数点 |
'm' | 時間単位 |
'M' | 日付 |
'O' | (Python)オブジェクト |
'S','a' | 0で終端されたバイト |
'U' | ユニコード文字列 |
'V' | Rawデータ |
>>>
>>> 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.]])
>>> g = np.linspace(5,15,12)
>>> g
array([ 5. , 5.90909091, 6.81818182, 7.72727273, 8.63636364,
9.54545455, 10.45454545, 11.36363636, 12.27272727, 13.18181818,
14.09090909, 15. ])
>>> g.size
12
>>> g.itemsize
8
>>> g.ndim
1
>>> g.dtype
dtype('float64')
>>> g.nbytes
96
配列の行・列、サイズの変更
関数reshape(),resize()を使います。
>>> g = np.arange(15)
>>> g
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> g.shape
(15,)
>>> np.shape(g)
(15,)
>>> g.reshape((3,5))
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> h = g.reshape((5,3))
>>> h
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
>>> h.T
array([[ 0, 3, 6, 9, 12],
[ 1, 4, 7, 10, 13],
[ 2, 5, 8, 11, 14]])
>>> h.transpose()
array([[ 0, 3, 6, 9, 12],
[ 1, 4, 7, 10, 13],
[ 2, 5, 8, 11, 14]])
>>>
h.T および h.transpose()は、hの転置行列です。
次に、サイズを変更してみます。
>>> g
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> np.resize(g,(3,1))
array([[0],
[1],
[2]])
>>> np.resize(g,(1,5))
array([[0, 1, 2, 3, 4]])
>>> np.resize(g,(2,5))
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>>