numpy介绍
创建numpy的数组
np.array()
传入一个列表, 返回一个数组
li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] arr = np.array(li) print(type(arr), arr) # <class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8 9]
np.arange(10)
类似于python中的range
arr = np.arange(10) print(type(arr), arr) <class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8 9] # 和python的range类型, 顾头不顾尾, 支持步长, 和python的range的区别在于, 起始值和步长支持小数 arr = np.arange(1.2, 10.5, 0.5) print(type(arr), arr) # <class 'numpy.ndarray'> [ 1.2 1.7 2.2 2.7 3.2 3.7 4.2 4.7 5.2 5.7 6.2 6.7 7.2 7.7 8.2 8.7 9.2 9.7 10.2]
拓展: 将一维数据变成多维数组
前提保证, reshape()中的行和列相乘等于数组中的全部元素的个数
将一维数组转换成二维数组
arr = np.arange(0, 15).reshape(3, 5) print(arr) # [[ 0 1 2 3 4] # [ 5 6 7 8 9] # [10 11 12 13 14]]
将一维数组转换成三维数组
arr = np.arange(30).reshape(3, 2, 5) print(arr) # [[[ 0 1 2 3 4] # [ 5 6 7 8 9]] # # [[10 11 12 13 14] # [15 16 17 18 19]] # # [[20 21 22 23 24] # [25 26 27 28 29]]] # 三维数组可以只给出两个数值, 另外一个用-1代替, 自动求剩下一个一个应该是多少 # 比如:arr = np.arange(30).reshape(3, 2, -1) 会自动求出-1位置的数应该是6
np.linspace(0, 10, 5)
把0到10范围的数分成长度为5的数组, 保证每个数之间的差是相等的, 前包后也包
arr = np.linspace(0, 10, 5) print(type(arr), arr) # <class 'numpy.ndarray'> [ 0. 2.5 5. 7.5 10. ]
np.zeros(10)
创建全0的数组
arr = np.zeros(10) print(arr) # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] # 默认是float类型, 可以指定dtype, 可以指定创建几维的数据传一个元祖, 比如np.zeros(3,2,5), 就是创建一个3页2行5列的全0数组
np.ones(10)
创建全1的数组
arr = np.ones(10) print(arr) # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] # 默认使用float类型, 可以指定dtype, 可以指定创建几维的数据传一个元祖, 比如np.ones(3,2,5), 就是创建一个3页2行5列的全1数组
np.empty(10)
创建元素为随机的数组
# np.empty(10)的意义: 向内存要一个长度为10的内存, 并不进行赋值, 内存中原本的数据是什么就是什么, 之后可以对这个里面的值进行覆盖, 效率相对高一点 arr = np.empty(10) print(arr) # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
np.eye(5)
创建单位矩阵, 方形的, 主对角线为1
arr = np.eye(5) # 类似于np.identity(5) print(arr) # [[1. 0. 0. 0. 0.] # [0. 1. 0. 0. 0.] # [0. 0. 1. 0. 0.] # [0. 0. 0. 1. 0.] # [0. 0. 0. 0. 1.]]