In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
In [2]:
theta = np.pi / 3
m = np.array([[np.cos(theta),-np.sin(theta)],
[np.sin(theta),np.cos(theta)]])
m
Out[2]:
In [3]:
np.dot(m, m)
Out[3]:
In [4]:
np.linalg.inv(m)
Out[4]:
In [5]:
m.T
Out[5]:
In [6]:
x = np.array([[1],[0]])
x
Out[6]:
In [7]:
n = np.dot(m,x)
n
Out[7]:
In [8]:
a = np.array([[-1],[0],[1]])
b = np.array([[2],[3],[5]])
np.dot(a.T, b)
Out[8]:
In [9]:
np.dot(a, b.T)
Out[9]:
In [10]:
np.dot(a.T, b)[0][0]
Out[10]:
In [11]:
m = np.array([[1,2],[3,4]])
m
Out[11]:
In [12]:
2*m
Out[12]:
In [13]:
m*2
Out[13]:
In [14]:
m**2
Out[14]:
In [15]:
m+10
Out[15]:
In [16]:
[1,2,3] * 2
Out[16]:
In [17]:
np.array([1,2,3]) * 2
Out[17]:
In [18]:
def square(x):
if isinstance(x, list):
x = np.array(x)
return x**2
In [19]:
square(3)
Out[19]:
In [20]:
square([1,2,3])
Out[20]:
In [21]:
square(np.array([1,2,3]))
Out[21]:
In [22]:
def square(x):
return x**2
square(np.array([1,2,3]))
Out[22]:
In [23]:
a = np.array([[10,20],[30,40]])
a
Out[23]:
In [24]:
b = np.array([[1,2],[3,4]])
b
Out[24]:
In [25]:
a+b
Out[25]:
In [26]:
a-b
Out[26]:
In [27]:
a**b
Out[27]:
In [28]:
np.zeros((3,3))
Out[28]:
In [29]:
np.ones((2,3))
Out[29]:
In [30]:
np.eye(4)
Out[30]:
In [31]:
a = np.array([1,2,3,4,5,6])
a
Out[31]:
In [32]:
b = a.reshape((2,3))
b
Out[32]:
In [33]:
c = b.reshape((3,2))
c
Out[33]:
In [34]:
b.shape
Out[34]:
In [35]:
c.shape
Out[35]:
In [36]:
x = [1,2,3,4]
np.array(x).reshape(len(x),1)
Out[36]:
In [37]:
np.array([x])
Out[37]:
In [38]:
np.array([x]).T
Out[38]:
In [39]:
np.arange(0, 1, 0.1)
Out[39]:
In [40]:
a = np.ones(9).reshape((3,3))
a
Out[40]:
In [41]:
b = a*2
b
Out[41]:
In [42]:
np.vstack((a,b))
Out[42]:
In [43]:
np.hstack((a,b))
Out[43]:
In [44]:
a = np.array([-1, 0, 1])
b = np.array([ 1, 2, 3])
np.dot(a, b)
Out[44]:
In [45]:
m = np.array([1,1,1,2,2,2,3,3,3]).reshape(3,3)
m
Out[45]:
In [46]:
np.dot(m,a)
Out[46]:
In [47]:
np.dot(a,m)
Out[47]:
(1) 次の (2,2)行列 m と(2,1)行列(縦ベクトル)v をarrayオブジェクトとして定義してください。また、行列の積 w = mv を計算してください。
(2) 逆行列を計算する関数 np.linalg.inv() を利用して、次の連立方程式の解を求めてください。
(3) 次のarrayオブジェクトを「手早く」用意する方法を考えてください。
(ヒント:np.arange, reshape, T を利用します。)
(4) arrayオブジェクトを受け取って、各要素を2倍する(*2 を演算する)関数 double を定義しなさい。また、(1)で定義した m を用いて、double(m) の結果を確認しなさい。
(5) double(m.tolist()) の結果を確認して、なぜそのような結果になったのかを考えてください。
(ヒント:tolist()メソッドは、arrayオブジェクトを通常の多次元リストに変換します。)