>>> a = np.array([1.0, 1.0]) >>> b = np.array([1.0, 1.0, 1.0]) >>> np.linalg.norm(b) 1.7320508075688772 >>> c = np.array([[2, 3], [1, 2]]) >>> c array([[2, 3], [1, 2]]) >>> np.linalg.inv(c) array([[ 2., -3.], [-1., 2.]]) >>> c @ np.linalg.inv(c) array([[1., 0.], [0., 1.]]) >>> np.linalg.det(c) 1.0 >>> np.linalg.matrix_rank(c) 2 >>> np.trace(c) 4
x + y = 100 2x + 4y = 272
>>> a = np.array([[1, 1], [2, 4]]) >>> b = np.array([100, 272]) >>> np.linalg.solve(a, b) array([64., 36.]) >>> np.linalg.inv(a) @ b array([64., 36.])
x + y + z = 10 2x + 4y + 6z = 38 2x + 4z = 14
>>> a = np.array([[1, 1, 1], [2, 4, 6], [2, 0, 4]]) >>> b = np.array([10, 38, 14]) >>> np.linalg.solve(a, b) array([3., 5., 2.]) >>> np.linalg.inv(a) @ b array([3., 5., 2.])
>>> a = np.array([1, 2, 3]) >>> b = np.array([4, 5, 6]) >>> np.inner(a, b) 32 >>> a @ b 32 >>> c = np.array([[1, 2], [3, 4]]) >>> d = np.array([[5, 6], [7, 8]]) >>> np.inner(c, d) array([[17, 23], [39, 53]]) >>> c @ d.T array([[17, 23], [39, 53]]) >>> c @ d array([[19, 22], [43, 50]]) >>> e = np.arange(9).reshape((3, 3)) >>> e array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.inner(e, a) array([ 8, 26, 44]) >>> e @ a array([ 8, 26, 44]) >>> np.inner(c, 10) array([[10, 20], [30, 40]]) >>> np.inner(10, c) array([[10, 20], [30, 40]]) >>> np.outer(a, b) array([[ 4, 5, 6], [ 8, 10, 12], [12, 15, 18]]) >>> np.outer(c, d) array([[ 5, 6, 7, 8], [10, 12, 14, 16], [15, 18, 21, 24], [20, 24, 28, 32]]) >>> np.linalg.matrix_power(np.array([[1, 0], [0, 1]]), 2) array([[1, 0], [0, 1]]) >>> np.linalg.matrix_power(np.array([[1, 0], [0, 1]]), 10) array([[1, 0], [0, 1]]) >>> np.linalg.matrix_power(np.array([[1, 1], [1, 0]]), 2) array([[2, 1], [1, 1]]) >>> np.linalg.matrix_power(np.array([[1, 1], [1, 0]]), 3) array([[3, 2], [2, 1]]) >>> np.linalg.matrix_power(np.array([[1, 1], [1, 0]]), 4) array([[5, 3], [3, 2]]) >>> np.linalg.matrix_power(np.array([[1, 1], [1, 0]]), 10) array([[89, 55], [55, 34]]) >>> np.linalg.matrix_power(np.array([[1, 1], [1, 0]]), 40) array([[165580141, 102334155], [102334155, 63245986]])
>>> a = np.arange(9).reshape((3, 3)) >>> a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> b = np.arange(10, 19).reshape((3, 3)) >>> b array([[10, 11, 12], [13, 14, 15], [16, 17, 18]]) >>> np.concatenate((a, b), axis=0) array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [10, 11, 12], [13, 14, 15], [16, 17, 18]]) >>> np.concatenate((a, b), axis=1) array([[ 0, 1, 2, 10, 11, 12], [ 3, 4, 5, 13, 14, 15], [ 6, 7, 8, 16, 17, 18]]) >>> np.hstack((a, b)) array([[ 0, 1, 2, 10, 11, 12], [ 3, 4, 5, 13, 14, 15], [ 6, 7, 8, 16, 17, 18]]) >>> np.vstack((a, b)) array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [10, 11, 12], [13, 14, 15], [16, 17, 18]]) >>> np.dstack((a, b)) array([[[ 0, 10], [ 1, 11], [ 2, 12]], [[ 3, 13], [ 4, 14], [ 5, 15]], [[ 6, 16], [ 7, 17], [ 8, 18]]]) >>> c = np.arange(1, 6) >>> d = np.arange(6, 11) >>> c array([1, 2, 3, 4, 5]) >>> d array([6, 7, 8, 9, 10]) >>> np.hstack((c, d)) array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> np.vstack((c, d)) array([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]]) >>> np.dstack((c, d)) array([[[ 1, 6], [ 2, 7], [ 3, 8], [ 4, 9], [ 5, 10]]])
>>> a = np.arange(10) >>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.split(a, 5) [array([0, 1]), array([2, 3]), array([4, 5]), array([6, 7]), array([8, 9])] >>> np.array_split(a, 3) [array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9])] >>> np.split(a, [4]) [array([0, 1, 2, 3]), array([4, 5, 6, 7, 8, 9])] >>> np.split(a, [2, 7]) [array([0, 1]), array([2, 3, 4, 5, 6]), array([7, 8, 9])] >>> b = np.arange(1, 9).reshape(2, 4) >>> b array([[1, 2, 3, 4], [5, 6, 7, 8]]) >>> np.hsplit(b, 2) [array([[1, 2], [5, 6]]), array([[3, 4], [7, 8]])] >>> np.vsplit(b, 2) [array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])] >>> c = np.arange(1, 9).reshape((2, 2, 2)) >>> c array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) >>> np.dsplit(c, 2) [array([[[1], [3]], [[5], [7]]]), array([[[2], [4]], [[6], [8]]])]
delete(a, obj, axis=None) insert(a, obj, values, axis=None)
>>> a = np.arange(10, 26).reshape((4, 4)) >>> a array([[10, 11, 12, 13], [14, 15, 16, 17], [18, 19, 20, 21], [22, 23, 24, 25]]) >>> np.delete(a, 1, 0) array([[10, 11, 12, 13], [18, 19, 20, 21], [22, 23, 24, 25]]) >>> np.delete(a, 1, 1) array([[10, 12, 13], [14, 16, 17], [18, 20, 21], [22, 24, 25]]) >>> np.delete(a, [0, 2], 0) array([[14, 15, 16, 17], [22, 23, 24, 25]]) >>> np.delete(a, [0, 2, 4, 6], None) array([11, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25]) >>> np.insert(a, 0, 99, 0) array([[99, 99, 99, 99], [10, 11, 12, 13], [14, 15, 16, 17], [18, 19, 20, 21], [22, 23, 24, 25]]) >>> np.insert(a, 0, 99, 1) array([[99, 10, 11, 12, 13], [99, 14, 15, 16, 17], [99, 18, 19, 20, 21], [99, 22, 23, 24, 25]]) >>> np.insert(a, 0, 99, None) array([99, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]) >>> np.insert(a, 2, [1, 2, 3, 4], 0) array([[10, 11, 12, 13], [14, 15, 16, 17], [ 1, 2, 3, 4], [18, 19, 20, 21], [22, 23, 24, 25]]) >>> np.insert(a, 2, [1, 2, 3, 4], 1) array([[10, 11, 1, 12, 13], [14, 15, 2, 16, 17], [18, 19, 3, 20, 21], [22, 23, 4, 24, 25]]) >>> np.insert(a, 2, [1, 2, 3, 4], None) array([10, 11, 1, 2, 3, 4, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25])
>>> a = np.arange(8).reshape((2, 4)) >>> a array([[0, 1, 2, 3], [4, 5, 6, 7]]) >>> np.swapaxes(a, 0, 1) array([[0, 4], [1, 5], [2, 6], [3, 7]]) >>> b = np.arange(8).reshape((2,2,2)) >>> b array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> np.swapaxes(b, 1, 0) array([[[0, 1], [4, 5]], [[2, 3], [6, 7]]]) >>> np.swapaxes(b, 0, 2) array([[[0, 4], [2, 6]], [[1, 5], [3, 7]]])
>>> a = np.arange(9, 0, -1).reshape((3, 3)) >>> a array([[9, 8, 7], [6, 5, 4], [3, 2, 1]]) >>> np.sort(a) array([[7, 8, 9], [4, 5, 6], [1, 2, 3]]) >>> a array([[9, 8, 7], [6, 5, 4], [3, 2, 1]]) >>> np.sort(a, axis=0) array([[3, 2, 1], [6, 5, 4], [9, 8, 7]]) >>> np.sort(a, axis=None) array([1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> a.sort(axis=0) >>> a array([[3, 2, 1], [6, 5, 4], [9, 8, 7]]) >>> a.sort(axis=1) >>> a array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> a = np.array([[1, 2, 3, 4]]) >>> a array([[1, 2, 3, 4]]) >>> a.shape (1, 4) >>> b = np.array([5, 6, 7, 8]) >>> b array([5, 6, 7, 8]) >>> b.shape (4,) >>> a + b array([[ 6, 8, 10, 12]]) >>> b + a array([[ 6, 8, 10, 12]]) >>> c = np.arange(16).reshape((4, 4)) >>> c array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> c + a array([[ 1, 3, 5, 7], [ 5, 7, 9, 11], [ 9, 11, 13, 15], [13, 15, 17, 19]]) >>> c + b array([[ 5, 7, 9, 11], [ 9, 11, 13, 15], [13, 15, 17, 19], [17, 19, 21, 23]]) >>> a.T array([[1], [2], [3], [4]]) >>> a + a.T array([[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]) >>> c + a.T array([[ 1, 2, 3, 4], [ 6, 7, 8, 9], [11, 12, 13, 14], [16, 17, 18, 19]])
>>> a = np.arange(16).reshape((4, 4)) >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> np.savetxt('a.txt', a) >>> np.loadtxt('a.txt') array([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.], [12., 13., 14., 15.]])
0.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00 6.000000000000000000e+00 7.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 1.000000000000000000e+01 1.100000000000000000e+01 1.200000000000000000e+01 1.300000000000000000e+01 1.400000000000000000e+01 1.500000000000000000e+01 a.txt の内容
>>> np.save('a', a) >>> b = np.load('a.npy') >>> b array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) >>> b.dtype dtype('int64') >>> a.astype(np.float_) array([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.], [12., 13., 14., 15.]]) >>> np.save('b', a.astype(np.float_)) >>> b = np.load('b.npy') >>> b array([[ 0., 1., 2., 3.], [ 4., 5., 6., 7.], [ 8., 9., 10., 11.], [12., 13., 14., 15.]]) >>> b.dtype dtype('float64')
>>> a = np.arange(9) >>> b = np.arange(9).reshape((3, 3)) >>> c = np.arange(8).reshape((2, 2, 2)) >>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8]) >>> b array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> c array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> np.savez('test', a, b, c) >>> npz = np.load('test.npz') >>> type(npz) <class 'numpy.lib.npyio.NpzFile'> >>> npz.files ['arr_0', 'arr_1', 'arr_2'] >>> npz['arr_0'] array([0, 1, 2, 3, 4, 5, 6, 7, 8]) >>> npz['arr_1'] array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> npz['arr_2'] array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> np.savez('test', a = a, b = b, c = c) >>> npz = np.load('test.npz') >>> npz.files ['a', 'b', 'c'] >>> npz['a'] array([0, 1, 2, 3, 4, 5, 6, 7, 8]) >>> npz['b'] array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> npz['c'] array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])
>>> a = np.arange(6).reshape(2, 3) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> b = np.arange(10, 16).reshape(2, 3) >>> b array([[10, 11, 12], [13, 14, 15]]) >>> np.r_[a, b] array([[ 0, 1, 2], [ 3, 4, 5], [10, 11, 12], [13, 14, 15]]) >>> np.vstack((a, b)) array([[ 0, 1, 2], [ 3, 4, 5], [10, 11, 12], [13, 14, 15]]) >>> np.c_[a, b] array([[ 0, 1, 2, 10, 11, 12], [ 3, 4, 5, 13, 14, 15]]) >>> np.hstack((a, b)) array([[ 0, 1, 2, 10, 11, 12], [ 3, 4, 5, 13, 14, 15]])
>>> np.r_[1, 2, 3, [4, 5, 6], [0] * 3] array([1, 2, 3, 4, 5, 6, 0, 0, 0]) >>> np.r_[0:10:2] array([0, 2, 4, 6, 8]) >>> np.c_[[1, 2, 3], [10, 20, 30]] array([[ 1, 10], [ 2, 20], [ 3, 30]]) >>> x = np.array([[1], [2], [3]]) >>> y = np.array([[10], [20], [30]]) >>> x array([[1], [2], [3]]) >>> y array([[10], [20], [30]]) >>> np.c_[x, y] array([[ 1, 10], [ 2, 20], [ 3, 30]]) >>> np.hstack((x, y)) array([[ 1, 10], [ 2, 20], [ 3, 30]])
>>> np.r_['0', a, b] array([[ 0, 1, 2], [ 3, 4, 5], [10, 11, 12], [13, 14, 15]]) >>> np.r_['1', a, b] array([[ 0, 1, 2, 10, 11, 12], [ 3, 4, 5, 13, 14, 15]]) >>> np.r_['0, 2', [1, 2, 3], [4, 5, 6]] array([[1, 2, 3], [4, 5, 6]]) >>> np.r_['1, 2', [1, 2, 3], [4, 5, 6]] array([[1, 2, 3, 4, 5, 6]]) >>> np.r_['-1, 2, 0', [1, 2, 3], [4, 5, 6]] array([[1, 4], [2, 5], [3, 6]])
numpy.ix_([x0, x1, ..., xn], [y0, y1, ..., ym]) => インデックス配列
>>> a = np.arange(25).reshape((5, 5)) >>> a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24]]) >>> b = np.ix_([1, 3], [0, 2, 4]) >>> b (array([[1], [3]]), array([[0, 2, 4]])) >>> c = a[b] >>> c array([[ 5, 7, 9], [15, 17, 19]]) >>> a[b] = 0 >>> a array([[ 0, 1, 2, 3, 4], [ 0, 6, 0, 8, 0], [10, 11, 12, 13, 14], [ 0, 16, 0, 18, 0], [20, 21, 22, 23, 24]]) >>> c array([[ 5, 7, 9], [15, 17, 19]])
>>> a = np.array([[1, 2, 3],[4, 5, 6]]) >>> a array([[1, 2, 3], [4, 5, 6]]) >>> for x in a: print(x) ... [1 2 3] [4 5 6] >>> for x in a: ... for y in x: print(y) ... 1 2 3 4 5 6 >>> for x in a.flat: print(x) ... 1 2 3 4 5 6 >>> for i, x in np.ndenumerate(a): print(i, x) ... (0, 0) 1 (0, 1) 2 (0, 2) 3 (1, 0) 4 (1, 1) 5 (1, 2) 6 >>> for i in np.ndindex((2, 3)): print(i) ... (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) >>> for i in np.ndindex((2, 3)): print(i, a[i]) ... (0, 0) 1 (0, 1) 2 (0, 2) 3 (1, 0) 4 (1, 1) 5 (1, 2) 6
>>> a = np.array([1, 2, 3, 4]) >>> b = np.array([3, 4, 5, 6]) >>> np.union1d(a, b) array([1, 2, 3, 4, 5, 6]) >>> np.intersect1d(a, b) array([3, 4]) >>> np.setdiff1d(a, b) array([1, 2]) >>> np.setxor1d(a, b) array([1, 2, 5, 6]) >>> np.in1d(a, b) array([False, False, True, True]) >>> np.in1d(b, a) array([ True, True, False, False]) >>> np.in1d(a, a) array([ True, True, True, True]) >>> c = np.array([5, 4, 3, 2, 1, 3, 5, 7, 0]) >>> c array([5, 4, 3, 2, 1, 3, 5, 7, 0]) >>> np.unique(c) array([0, 1, 2, 3, 4, 5, 7]) >>> c array([5, 4, 3, 2, 1, 3, 5, 7, 0]) >>> np.unique(np.array([[3, 2, 1], [6, 5, 4], [2, 4, 6]])) array([1, 2, 3, 4, 5, 6])
>>> def issubset(xs, ys): return np.all(np.in1d(xs, ys)) ... >>> issubset(a, b) False >>> issubset(a, np.union1d(a, b)) True >>> issubset(a, a) True
>>> a = np.arange(1, 11) >>> a array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> np.sum(a) 55 >>> np.cumsum(a) array([ 1, 3, 6, 10, 15, 21, 28, 36, 45, 55], dtype=int32) >>> np.prod(a) 3628800 >>> np.cumprod(a) array([ 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800], dtype=int32) >>> np.diff(a) array([1, 1, 1, 1, 1, 1, 1, 1, 1]) >>> np.diff(a, n=2) array([0, 0, 0, 0, 0, 0, 0, 0]) >>> np.diff(a, n=0) array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> np.ediff1d(a) array([1, 1, 1, 1, 1, 1, 1, 1, 1]) >>> np.ediff1d(a, to_end=2, to_begin=0) array([0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2])
>>> xs = np.arange(11) >>> xs array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) >>> fs = xs ** 2 >>> fs array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100], dtype=int32) >>> zs1 = np.gradient(fs, xs) >>> zs1 array([ 1., 2., 4., 6., 8., 10., 12., 14., 16., 18., 19.]) >>> np.gradient(zs1, xs) array([1. , 1.5, 2. , 2. , 2. , 2. , 2. , 2. , 2. , 1.5, 1. ]) >>> zs2 = np.gradient(fs, xs, edge_order = 2) >>> zs2 array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20.]) >>> np.gradient(zs2, xs) array([2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.])
リスト : gradient() の簡単な使用例 (sample08.py) import numpy as np import matplotlib.pyplot as plt x = np.linspace(-3, 3, 6001) y = x ** 3 - x * 3 + 1 # x3 - 3x + 1 z1 = np.gradient(y, x, edge_order = 2) # 3x2 - 3 z2 = np.gradient(z1, x, edge_order = 2) # 6x plt.plot(x, y) plt.plot(x, z1) plt.plot(x, z2) # plt.savefig('grad.png', dpi=80) plt.show()
リスト : 数値積分 (円周率を求める, sample09.py) import numpy as np n = 10 for _ in range(5): # 中点則 w = 1 / n a = (np.arange(1, n + 1) - 0.5) * w b = 4.0 / (1.0 + a ** 2) p1 = np.sum(b) * w print(n, p1, np.pi - p1) # 台形則 c = np.linspace(0, 1, n + 1) d = 4.0 / (1.0 + c ** 2) p2 = np.trapz(d) * w print(n, p2, np.pi - p2) # シンプソン則 p3 = (p1 * 2 + p2) / 3 print(n, p3, np.pi - p3) n *= 10
$ python3 sample09.py 10 3.1424259850010987 -0.0008333314113055934 10 3.1399259889071587 0.0016666646826344333 10 3.1415926529697855 6.200076008155975e-10 100 3.1416009869231245 -8.333333331389525e-06 100 3.1415759869231277 1.6666666665443586e-05 100 3.141592653589792 1.3322676295501878e-15 1000 3.1415927369231267 -8.33333335670261e-08 1000 3.141592486923127 1.6666666624587378e-07 1000 3.141592653589793 0.0 10000 3.1415926544231265 -8.333334022836425e-10 10000 3.1415926519231268 1.6666663604780751e-09 10000 3.141592653589793 0.0 100000 3.1415926535981273 -8.334222201256125e-12 100000 3.1415926535731273 1.666577986725315e-11 100000 3.1415926535897944 -1.3322676295501878e-15
>>> a = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]) >>> np.convolve(a, [1, 1, 1, 1, 1]) array([0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0]) >>> np.convolve(a, [1, 1, 1, 1, 1], mode='same') array([0, 0, 0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0, 0, 0]) >>> np.convolve(a, [1, 1, 1, 1, 1], mode='valid') array([0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0])
リスト : 移動平均法 (sample10.py) import numpy as np import matplotlib.pyplot as plt # 東京の年平均気温 (1975 - 2014) data = np.array([ 15.6, 15.0, 15.8, 16.1, 16.9, 15.4, 15.0, 16.0, 15.7, 14.9, 15.7, 15.2, 16.3, 15.4, 16.4, 17.0, 16.4, 16.0, 15.5, 16.9, 16.3, 15.8, 16.7, 16.7, 17.0, 16.9, 16.5, 16.7, 16.0, 17.3, 16.2, 16.4, 17.0, 16.4, 16.7, 16.9, 16.5, 16.3, 17.1, 16.6 ]) x = np.arange(1975, 2015) # 移動平均法 data1 = np.convolve(data, np.ones(5) / 5.0, mode = 'valid') x1 = np.arange(1977, 2013) # 散布図 plt.plot(x, data, 'o') plt.plot(x1, data1, 'o') # 回帰直線 a, b = np.polyfit(x, data, 1) a1, b1 = np.polyfit(x1, data1, 1) plt.plot(x, x * a + b) plt.plot(x1, x1 * a1 + b1) # plt.savefig('tokyo1.png', dpi=80) plt.show()
>>> p1 = np.poly1d([1, 0, -1]) >>> p1 poly1d([ 1, 0, -1]) >>> print(p1) 2 1 x - 1 >>> p1(np.linspace(-2, 2, 21)) array([ 3. , 2.24, 1.56, 0.96, 0.44, 0. , -0.36, -0.64, -0.84, -0.96, -1. , -0.96, -0.84, -0.64, -0.36, 0. , 0.44, 0.96, 1.56, 2.24, 3. ]) >>> p1.r array([-1., 1.]) >>> np.poly([1, -1]) array([ 1., 0., -1.]) >>> np.polyder(p1) poly1d([2, 0]) >>> np.polyint(p1) poly1d([ 0.33333333, 0. , -1. , 0. ]) >>> p2 = np.poly1d([1, 1]) >>> print(p2) 1 x + 1 >>> p1(p2) poly1d([1., 2., 0.]) >>> p1 + p2 poly1d([1, 1, 0]) >>> p1 - p2 poly1d([ 1, -1, -2]) >>> p1 * p2 poly1d([ 1, 1, -1, -1]) >>> p1 / p2 (poly1d([ 1., -1.]), poly1d([0.]))
リスト : 多項式の簡単な使用例 (sample11.py) import numpy as np import matplotlib.pyplot as plt x = np.linspace(-3, 3, 31) p = np.poly1d([1, 1, -4, 1]) y = p(x) + np.random.randn(31) * 4 plt.plot(x, y, 'o') p1 = np.poly1d(np.polyfit(x, y, 3)) print(p1) plt.plot(x, p1(x)) # plt.savefig('poly01.png', dpi=80) plt.show()
3 2 0.8696 x + 0.5349 x - 3.553 x + 2.93
meshgrid(xs, ys, zs, ...) => [Xs, Ys, Zs, ...]
>>> np.meshgrid([1, 2, 3], [10, 20, 30]) [array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]), array([[10, 10, 10], [20, 20, 20], [30, 30, 30]])] >>> a, b = np.meshgrid([1, 2, 3], [10, 20, 30]) >>> a array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) >>> b array([[10, 10, 10], [20, 20, 20], [30, 30, 30]]) >>> a + b array([[11, 12, 13], [21, 22, 23], [31, 32, 33]]) >>> x, y, z = np.meshgrid([1, 2], [10, 20], [100, 200]) >>> x array([[[1, 1], [2, 2]], [[1, 1], [2, 2]]]) >>> y array([[[10, 10], [10, 10]], [[20, 20], [20, 20]]]) >>> z array([[[100, 200], [100, 200]], [[100, 200], [100, 200]]]) >>> x + y + z array([[[111, 211], [112, 212]], [[121, 221], [122, 222]]])
>>> x, y = np.mgrid[-1:1.5:0.5, -1:1.5:0.5] >>> x array([[-1. , -1. , -1. , -1. , -1. ], [-0.5, -0.5, -0.5, -0.5, -0.5], [ 0. , 0. , 0. , 0. , 0. ], [ 0.5, 0.5, 0.5, 0.5, 0.5], [ 1. , 1. , 1. , 1. , 1. ]]) >>> y array([[-1. , -0.5, 0. , 0.5, 1. ], [-1. , -0.5, 0. , 0.5, 1. ], [-1. , -0.5, 0. , 0.5, 1. ], [-1. , -0.5, 0. , 0.5, 1. ], [-1. , -0.5, 0. , 0.5, 1. ]]) >>> np.sqrt(x**2 + y**2) array([[1.41421356, 1.11803399, 1. , 1.11803399, 1.41421356], [1.11803399, 0.70710678, 0.5 , 0.70710678, 1.11803399], [1. , 0.5 , 0. , 0.5 , 1. ], [1.11803399, 0.70710678, 0.5 , 0.70710678, 1.11803399], [1.41421356, 1.11803399, 1. , 1.11803399, 1.41421356]])
リスト : 等高線の表示 (sample12.py) import numpy as np import matplotlib.pyplot as plt x, y = np.mgrid[-1:1.05:0.05, -1:1.05:0.05] z = np.sqrt(x ** 2 + y ** 2) c = plt.contour(x, y, z) c.clabel(fmt='%1.1f', fontsize=14) plt.gca().set_aspect('equal') # plt.savefig('mesh.png', dpi=80) plt.show()
リスト : 等高線の 3D 表示 (sample13.py) import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x, y = np.mgrid[-1:1.05:0.05, -1:1.05:0.05] z = np.sqrt(x ** 2 + y ** 2) ax = plt.figure().add_subplot(projection='3d') ax.contour3D(x, y, z) # plt.savefig('mesh1.png', dpi=80) plt.show()
リスト : ワイヤーフレーム (sample14.py) import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x, y = np.mgrid[-1:1.05:0.1, -1:1.05:0.1] z = np.sqrt(x ** 2 + y ** 2) ax = plt.figure().add_subplot(projection='3d') ax.plot_wireframe(x, y, z) # plt.savefig('mesh2.png', dpi=80) plt.show()
リスト : 散布図 (3D, sample15.py) import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x, y = np.mgrid[-1:1.05:0.1, -1:1.05:0.1] z = np.sqrt(x ** 2 + y ** 2) ax = plt.figure().add_subplot(projection='3d') ax.scatter3D(x.flat, y.flat, z.flat) # plt.savefig('mesh3.png', dpi=80) plt.show()