import numpy as ap numpy主要用来创建vectors和matrics,solve linear operations and generate random entries.

创建数组

  • 列表[]构建数组
>>> a = np.array([1,2,3,4])
>>> a.size
4    # 4个元素
>>> a.shape
(4,) # 4行1列
>>> print(a)
[1 2 3 4]
数组a
1
2
3
4
  • 行列向量转换
>>> a.shape=(1,4)
>>> print(a)
[[1 2 3 4]]
c1 c2 c3 c4
1 2 3 4
>>> a.reshape(2,2)
array([[1, 2],
       [3, 4]])
c1 c2
1 2
3 4
  • 取元素 取元素
>>> b = a.reshape(2,2)
>>> print(b)
[[1 2]
 [3 4]]
>>> b[0,:] # 取第1行
array([1, 2])
>>> b[:,0] # 取第1列
array([1, 3])
>>> b[0,1] # 取第1行第2列
2
>>> b[1,1] # 取第2行第2列
4
  • 改元素
>>> b[0,1] = 9.2 # 改第1行第2列为浮点数9.2
>>> print(b)
[[1 9]
 [3 4]]

b矩阵元素统一成浮点型

>>> c = np.array(b,dtype=float)
>>> print(c)
[[1. 9.]
 [3. 4.]]

修改c[0,1] = 9.2

>>> c[0,1] = 9.2
>>> print(c)
[[1.  9.2]
 [3.  4. ]]

独立copy

>>> d = c.copy()
>>> print(d)
[[1.  9.2]
 [3.  4. ]]
>>> d[0,1] = 10.2
>>> print(d)
[[ 1.  10.2]
 [ 3.   4. ]]
>>> print(c)
[[1.  9.2]
 [3.  4. ]]
  • arange
>>> a = np.arange(1,10,2) # 从1开始后续元素加2,不超过10
>>> print(a)
[1 3 5 7 9]
>>> b = np.arange(10,1,-2) # 从10开始后续减2,不超过1
>>> print(b)
[10  8  6  4  2]
>>> d = np.arange(10) # 生成10个元素
>>> print(d)
[0 1 2 3 4 5 6 7 8 9]

broadcasting

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式,当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制;即:可扩充较小数组中的元素来适配较大数组的形状,这种机制叫作广播(broadcasting) 广播

线性代数

A * X = B 代数求解

s0 = 10
b0 = 10
M0 = np.array((s0,b0))

SK = np.array((20,10))
BD = np.array((11,11))
M = np.array((SK,BD)).T

>>> M
array([[20, 11],
       [10, 11]])

K = 14.5
C = np.maximum(SK-K,0)
phi = np.linalg.solve(M,C) #求解线性方程组
>>> phi
array([ 0.55, -0.5 ])

C0 = M0.dot(phi)
>>> C0
0.5

refrence