Numpy の ndarray の2次元配列と簡単な作図

モジュールのインポート

import numpy as np
import matplotlib.pyplot as plt
import scienceplots
#Warning : As of version 2.0.0, you need to add import scienceplots before setting the style (plt.style.use('science')).
plt.style.use(['science', 'notebook'])

2次元配列

a1 = np.array([[1.1,1.2,1.3],[2.1,2.2,2.3],[3.1,3.2,3.3]])
a1
array([[1.1, 1.2, 1.3],
       [2.1, 2.2, 2.3],
       [3.1, 3.2, 3.3]])
a1.ravel() # 1次元配列に変換
array([1.1, 1.2, 1.3, 2.1, 2.2, 2.3, 3.1, 3.2, 3.3])
https://numpy.org/doc/stable/reference/generated/numpy.ravel.html

スライシング

a1[0,:] # 行のスライシング
array([1.1, 1.2, 1.3])
a1[0:1,:]
array([[1.1, 1.2, 1.3]])
a1[:,0] # 列のスライシング
array([1.1, 2.1, 3.1])
a1[:,0:1]
array([[1.1],
       [2.1],
       [3.1]])
a1[0]
array([1.1, 1.2, 1.3])

乱数

a2 = np.random.randn(3,3)
a2
array([[ 0.47771597,  0.37535963,  1.2353505 ],
       [ 1.4094989 ,  0.69342684, -0.43977754],
       [-0.60745483,  0.70770424, -0.37595966]])
a2[a1>=3]
array([-0.60745483,  0.70770424, -0.37595966])

メッシュグリッド

fig = plt.figure()
x = np.linspace(0,10,11)
y = np.linspace(10,20,11)
xv, yv = np.meshgrid(x,y)
zv = xv**2 + yv**2
plt.contourf(xv, yv, zv, levels=10)
plt.colorbar()
fig.savefig("meshgrid_ex.pdf")

zv
array([[100., 101., 104., 109., 116., 125., 136., 149., 164., 181., 200.],
       [121., 122., 125., 130., 137., 146., 157., 170., 185., 202., 221.],
       [144., 145., 148., 153., 160., 169., 180., 193., 208., 225., 244.],
       [169., 170., 173., 178., 185., 194., 205., 218., 233., 250., 269.],
       [196., 197., 200., 205., 212., 221., 232., 245., 260., 277., 296.],
       [225., 226., 229., 234., 241., 250., 261., 274., 289., 306., 325.],
       [256., 257., 260., 265., 272., 281., 292., 305., 320., 337., 356.],
       [289., 290., 293., 298., 305., 314., 325., 338., 353., 370., 389.],
       [324., 325., 328., 333., 340., 349., 360., 373., 388., 405., 424.],
       [361., 362., 365., 370., 377., 386., 397., 410., 425., 442., 461.],
       [400., 401., 404., 409., 416., 425., 436., 449., 464., 481., 500.]])