In [1]:import numpy as np In [2]:a = np.array([1, 2, 3]) a Out[2]:array([1, 2, 3]) In [3]:a[1] Out[3]:2 In [4]:a.shape Out[4]:(3,) In [5]:a.dtype.name Out[5]:'int64' In [6]:b = np.arange(4) # 0から3(=4の一つ手前)まで b Out[6]:array([0, 1, 2, 3]) In [7]:c = np.arange(2, 4) # 2から3(=4の一つ手前)まで c Out[7]:array([2, 3]) In [8]:d = np.arange(3, 4, 0.1) # 3から0.1飛ばしで4の直前まで d Out[8]:array([ 3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9]) In [9]:a = np.array([1, 2, 3]) a.dtype.name Out[9]:'int64' In [10]:b = np.array([1., 2., 3.]) b.dtype.name Out[10]:'float64' In [11]:c = np.array([1, 2, 3], dtype=np.float64) c.dtype.name Out[11]:'float64' In [12]:l = [[1, 2, 3], [4, 5, 6]] a = np.array(l) a Out[12]:array([[1, 2, 3], [4, 5, 6]]) In [13]:a[1, 2] Out[13]:6 In [14]:!echo "1,2,3\n4,5,6" >hoge.csv # まずはテスト用のデータを作る In [15]:import csv def read_csv_as_array(filename): data = [] with open(filename) as fp: for row in csv.reader(fp): data.append([float(x) for x in row]) return np.array(data) data = read_csv_as_array("hoge.csv") data Out[15]:array([[ 1., 2., 3.], [ 4., 5., 6.]]) In [16]:a = np.zeros((3, 4)) a Out[16]:array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]]) In [17]:b = np.ones((4, 4)) b Out[17]:array([[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]]) In [18]:c = np.zeros((3, 3), dtype=np.int64) c Out[18]:array([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) In [19]:e = np.empty((4, 3)) e Out[19]:array([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]) In [20]:np.random.seed(0) a = np.random.rand(3, 4) a Out[20]:array([[ 0.5488135 , 0.71518937, 0.60276338, 0.54488318], [ 0.4236548 , 0.64589411, 0.43758721, 0.891773 ], [ 0.96366276, 0.38344152, 0.79172504, 0.52889492]]) In [21]:b = np.random.randn(3, 4) b Out[21]:array([[ 0.76103773, 0.12167502, 0.44386323, 0.33367433], [ 1.49407907, -0.20515826, 0.3130677 , -0.85409574], [-2.55298982, 0.6536186 , 0.8644362 , -0.74216502]]) In [22]:v = np.array([1, 2, 3, 4]) v[1:3] Out[22]:array([2, 3]) In [23]:v[2:] Out[23]:array([3, 4]) In [24]:v[:3] Out[24]:array([1, 2, 3]) In [25]:v[:-1] Out[25]:array([1, 2, 3]) In [26]:a = np.arange(9).reshape(3, 3) a Out[26]:array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) In [27]:a[:2, :] Out[27]:array([[0, 1, 2], [3, 4, 5]]) In [28]:a[:, 1:] Out[28]:array([[1, 2], [4, 5], [7, 8]]) In [29]:a[:, 2] Out[29]:array([2, 5, 8]) In [30]:a = np.array([5, 4, 3, 2, 1]) ii = np.array([0, 2, 3]) a[ii] Out[30]:array([5, 3, 2]) In [31]:b = np.arange(9).reshape(3, 3) b Out[31]:array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) In [32]:ii = np.array([0, 1]) jj = np.array([1, 2]) b[ii, jj] Out[32]:array([1, 5]) In [33]:ii = np.array([True, False, True, False, False]) a[ii] # a.shape == ii.shape Out[33]:array([5, 3]) In [34]:kk = np.array([[True, False, False], [False, True, False], [False, False, False]]) b[kk] # b.shape == kk.shape Out[34]:array([0, 4]) In [35]:a = np.arange(20).reshape(5, 4) a Out[35]:array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]) In [36]:a.sum() Out[36]:190 In [37]:a.sum(axis=0) Out[37]:array([40, 45, 50, 55]) In [38]:a.mean(axis=1) Out[38]:array([ 1.5, 5.5, 9.5, 13.5, 17.5]) In [39]:a.max(axis=1) Out[39]:array([ 3, 7, 11, 15, 19]) In [40]:a.min(axis=1) Out[40]:array([ 0, 4, 8, 12, 16]) In [41]:a.argmax(axis=1) Out[41]:array([3, 3, 3, 3, 3]) In [42]:a.argmin(axis=1) Out[42]:array([0, 0, 0, 0, 0]) In [43]:a = np.arange(9).reshape(3, 3) a Out[43]:array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) In [44]:b = np.arange(10, 19).reshape(3, 3) b Out[44]:array([[10, 11, 12], [13, 14, 15], [16, 17, 18]]) In [45]:c = np.arange(3) c Out[45]:array([0, 1, 2]) In [46]:np.dot(a, b) # aとbの行列積 Out[46]:array([[ 45, 48, 51], [162, 174, 186], [279, 300, 321]]) In [47]:np.dot(a, c) # aとcの行列積、cは列ベクトルとみなされる Out[47]:array([ 5, 14, 23]) In [48]:np.dot(c, a) # cとaの行列積、cは行ベクトルとみなされる Out[48]:array([15, 18, 21]) In [49]:a = np.arange(9).reshape(3, 3) b = np.arange(10, 19).reshape(3, 3) # aとbは前のセッションと同じ設定 a * b # 要素ごとの積 Out[49]:array([[ 0, 11, 24], [ 39, 56, 75], [ 96, 119, 144]])