标签:科学 映射 之间 组成 数学函数 empty 用法 磁盘 相等
numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。
创建ndarray:创建数组最简单的方法就是使用array函数,他接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的numpy数组,其中,嵌套序列(比如有一组等长列表组成的列表)将会别转换为一个多维数组。
除了np.array之外,还有一些函数可以新建数组:
import numpy as np
a = [1, 2, 3, 4]
b = np.array(a) # 将列表转换为数组
print(b) # [1 2 3 4]
ar_zero = np.zeros([10, 10]) # 创建10行10列的数值为浮点0的矩阵
ar_ones = np.ones([10, 10]) # 创建10行10列的数值为浮点1的矩阵
数组是这样的ar_ones和ar_zeros
创建随机数组
均匀分布
arr = np.random.rand(10, 10) # 创建指定形状(例如10行10列)的数组(范围在0,1之间的小数)
arr_r = np.random.uniform(0, 100) # 创建指定范围的一个数
arr_r_r = np.random.randint(0, 100) # 创建指定范围内的一个整数
正态分布
np.random.normal(1.75, 0.1, (2, 3)) # 给定均值/标准差/维度的正态分布
查看数组的属性的用法
ar_ones = np.ones([10, 10])
ar_ones.size # 数组元素个数
ar_ones.shape # 数组形状
ar_ones.ndim # 数组维度
ar_ones.dtype # 数组元素类型
数组很重要,他可以使我们不编写循环即对数据执行批量运算,这就叫矢量化,大小相等的数组之间的任何算数运算都会讲运算应用到元素级,同样,数组与标量的算数运算会将那个标量值传到各个元素。
arr = np.array([[1., 2., 3.], [4., 5., 6.]])
print(arr)
# [[1. 2. 3.]
# [4. 5. 6.]]
1/arr
# [[1. 0.5 0.33333333]
# [0.25 0.2 0.16666667]]
arr-arr
# [[0. 0. 0.]
# [0. 0. 0.]]
arr*arr
# [[ 1. 4. 9.]
# [16. 25. 36.]]
arr**0.5
# [[1. 1.41421356 1.73205081]
# [2. 2.23606798 2.44948974]]
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
arr3d
#[[[ 1 2 3]
# [ 4 5 6]]
# [[ 7 8 9]
# [10 11 12]]]
arr3d[0]
# [[1 2 3]
# [4 5 6]]
arr3d[0][1]
# [4 5 6]
arr3d[0, 1]
# [4 5 6]
? 基本数组统计方法
可以通过数组上的一组书写函数对整个数字或某个轴向的数据进行统计计算。
sum,mean以及标准差std等聚合计算既可以当做数组的实例方法调用,也可以当做顶级Numpy函数使用。
arr = np.random.randn(5, 4) #一个正态分布的数据
arr
# [[ 0.95326975 0.77312101 -0.95214153 1.95996848]
# [ 0.24917771 0.33556837 2.15445141 -1.25784532]
# [-0.80319568 -0.9765313 0.36326416 -0.85973763]
# [-1.71753049 1.26597532 -1.16980525 0.03452003]
# [ 0.32723967 -1.09855723 -0.21926247 0.67971173]]
arr.mean()
# 0.002083038257278563
np.mean(arr)
# 0.002083038257278563
arr.sum()
# 0.041660765145571266
mean和sum这类的函数可以接受一个axis参数(用于计算该轴向上的统计值),最终结果是一个少一维的数组。
arr = np.random.randn(5, 4)
arr.mean(axis=1)
# [-0.7915737 0.90559043 0.07557592 -0.02567472 0.35097451]
arr.sum(0)
# [ 3.23951683 2.87480084 -2.95252202 -1.10222588]
其他如cumsum和cumprop之类的方法则不聚合,而是产生一个由中间结果组成的数组。
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
arr.cumsum(0)
# [[ 0 1 2]
# [ 3 5 7]
# [ 9 12 15]]
arr.cumprod(1)
# [[ 0 0 0]
# [ 3 12 60]
# [ 6 42 336]]
线性代数(如矩阵乘法,矩阵分解,行列式以及其他方阵数学等)是是任何数组库的重要组成部分。
numpy提供了一个用于矩阵乘法的dot函数(既是一个数组方法,也是numpy命名空间中的一个函数)
x = np.array([[1., 2., 3.], [4., 5., 6.]])
y = np.array([[6., 23.], [-1, 7], [8, 9]])
x
# [[1. 2. 3.]
# [4. 5. 6.]]
y
# [[ 6. 23.]
# [-1. 7.]
# [ 8. 9.]]
x.dot(y)
# [[ 28. 64.]
# [ 67. 181.]]
np.dot(x, y)
# [[ 28. 64.]
# [ 67. 181.]]
numpy.linalg 中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西。
他们跟MATLIB和R等语言所使用的是相同的行业标准级Fortran库。
下面是常用的numpy.linalg函数:
标签:科学 映射 之间 组成 数学函数 empty 用法 磁盘 相等
原文地址:https://www.cnblogs.com/z-x-h/p/12544106.html