本文已参与「新人创作礼」活动,一起开启掘金创作之路
Numpy 支持大量的数组与矩阵运算.
基础
导入
首先需要导入numpy这个库,一般可以命名为np。
import numpy as np
创建
可以通过array()函数定义数字实例对象。 例如,可以导入一个3行3列的数组:
a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
a.ndim
#2
a.shape
#(3,4)
a.dtype
#int32
可以创建一个数组,并且设置它的行列。 -1是模糊控制,比如(3,-1)就是三行,列数不固定,根据多少个数字自动判断。如果不能整除就会报错。
w1 = np.arange(12).reshape(3,4)
w1
#array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]])
w2 = np.arange(12).reshape(2, 2, 3)
x2
#array([[[ 0, 1, 2],
# [ 3, 4, 5]],
#
# [[ 6, 7, 8],
# [ 9, 10, 11]]])
w3 = np.arange(12).reshape(3,-1)
w3
#array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]])
| 功能 | 公式 |
|---|---|
| 查看维度 | a.ndim |
| 查看行列数 | a.shape |
| 查看元素类型 | a.dtype |
特殊数组
特殊
| 函数 | 参数 |
|---|---|
| np.zeros | ([维度,行,列]) 全部是0 |
| np.ones | ([维度,行,列]) 全部是1 |
| np.empty | ([维度,行,列])只分配内存空间,不需要填充数值 |
| np.eye | (行,列) 单位矩阵 eye也能创建矩阵,但1的位置是单位矩阵的位置 |
| np.identity | (阶数) 单位矩阵 identity只能创建方阵 |
np.zeros([2,3])
#array([[0., 0., 0.],
# [0., 0., 0.]])
np.zeros(2)
#array([0., 0.])
np.ones(3)
# array([1., 1., 1.])
np.empty([2,1,3])
#array([[[0., 0., 0.]],
#
# [[0., 0., 0.]]])
np.eye(3,2)
#array([[1., 0.],
# [0., 1.],
# [0., 0.]])
np.identity(3,2)
#array([[1., 0.],
# [0., 1.],
# [0., 0.]])
对角阵diag()
diag(v,k=0)
-
v 如果v是一维数组,返回以一维数组为对角线元素的矩阵; 如果v是二维数组,返回对角元素。
-
k 默认k=0,无影响; k>0 : 主对角线上的对角线元素; k<0 : 主对角线下的对角线元素。
w = np.arange(16).reshape(4,-1)
np.diag(w)
# array([ 0, 5, 10, 15])
np.diag(w,k=1)
# array([ 1, 6, 11])
np.diag(w,k=-1)
# array([ 4, 9, 14])
w2 = np.arange(5)
np.diag(w2)
#array([[0, 0, 0, 0, 0],
# [0, 1, 0, 0, 0],
# [0, 0, 2, 0, 0],
# [0, 0, 0, 3, 0],
# [0, 0, 0, 0, 4]])
序列数组
可以用来构建等差/等比序列。
| 函数 | 参数 |
|---|---|
| np.arange | (start=0, stop, step=1, dtype) |
| np.linspace | (start, stop, num=50, endpoint=True, retstep=False, dtype=None);第三个参数默认为True包含stop值,否则不包含。第四个参数如果为 True 时,生成的数组中会显示间距 |
| np.logspace | (np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None));参数base表示底数 |
np.arange(5)
#array([0, 1, 2, 3, 4])
np.linspace(1,10,5)
#array([ 1. , 3.25, 5.5 , 7.75, 10. ])
np.logspace(2,8,3,base=2)
#array([ 4., 32., 256.])