Numpy-处理数值型数据

在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。

NumPy 数组(array) 是一个多维的数组对象,称为ndarray,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型
Numpy库中还存在着另一种数据类型-- 矩阵(matrix) 与MATLAB中matrices等价

数组array类型转换为矩阵matrix类型

randMat = np.mat(np.random.randint(0, 7,(2,2)))
print(randMat)
print(randMat.I)   # 对randMat矩阵做逆运算

运行结果

[[4 0]
 [3 4]]
[[ 0.25    0.    ]
 [-0.1875  0.25  ]]

矩阵、逆矩阵计算(会有计算误差)

randMat = np.mat(np.random.rand(3,3))
print(randMat)
invranMat = randMat.I
print(invranMat)   # 对randMat矩阵做逆运算
myEye = randMat*invranMat # 应该是一个单位阵,但有一定的计算误差
print(myEye)
myEye - np.eye(3)  # 得出误差值

运行结果

[[0.69147751 0.65047686 0.72393914]
 [0.47508861 0.59666377 0.06696942]
 [0.07256214 0.19897603 0.151861  ]]
[[ 1.65268456  0.9679528  -8.30539972]
 [-1.43891214  1.12220742  6.36457846]
 [ 1.09565127 -1.93288009  2.21425537]]
[[ 1.00000000e+00  8.80754300e-17  6.81626966e-16]
 [-1.33730097e-16  1.00000000e+00  2.19584981e-16]
 [-1.07086172e-16  1.27542149e-16  1.00000000e+00]]
matrix([[-1.11022302e-16,  8.80754300e-17,  6.81626966e-16],
        [-1.33730097e-16,  2.22044605e-16,  2.19584981e-16],
        [-1.07086172e-16,  1.27542149e-16, -1.11022302e-16]])

ndarray的创建

1 随机创建

  • [0.0,1.0]浮点型-均匀分布
np.random.rand(2,3)   # 创建随机浮点型数组,范围[0-1]

运行结果

array([[0.82953411, 0.02055151, 0.1949628 ], 
[0.41322586, 0.79022698, 0.22244829]])
  • 整型-均匀分布
# randint(low, high=None, size=None, dtype=int)
np.random.randint(4,size=(2, 2))   # 创建随机整数型数组,前包后不包
np.random.randint(3, 4,size=(2, 2)) 
np.random.randint(3, 4,(2, 2))

运行结果

array([[0, 1],
       [3, 1]])
array([[3, 3],
       [3, 3]])
array([[3, 3],
       [3, 3]])
  • 浮点型-均匀分布
# uniform(low=0.0, high=1.0, size=None)
np.random.uniform(0,1,(3,2))

运行结果

array([[0.31851325, 0.99450262],
       [0.43610393, 0.38685498],
       [0.24699637, 0.8034744 ]])
  • [0,1]浮点型-标准正态分布
np.random.randn(2,3)  # 返回具有标准正态分布的序列

运行结果

array([[ 0.92792399, -0.98559607,  0.60592301],
       [ 0.19278189,  0.823594  , -0.93083771]])
  • 浮点型-正态(高斯)分布
# normal(loc=0.0, scale=1.0, size=None)
# loc  : 分布中心
# scale: 标准差
# size : 形状
np.random.normal(3, 1, (2, 3))

运行结果

array([[1.70176164, 3.91084024, 2.67736062],
       [4.02143092, 2.20759498, 2.70979432]])
  • 随机种子
np.random.seed(3) # 使得同一电脑下程序多次运行时生成的随机数一致

2 序列创建

  • 列表转换为数组
# array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0)
# object : 序列对象(list) 嵌套序列对象(list of list)
np.array([[1,2,3],[11,12,13]])

运行结果

array([[ 1,  2,  3],
     [11, 12, 13]])
  • 全0数组
# zeros(shape, dtype=float, order='C')
np.zeros((3,2))

运行结果

array([[0., 0.],
     [0., 0.],
     [0., 0.]])
  • 全1数组
# np.ones(shape, dtype=None, order='C')
np.ones(7)

运行结果

array([1., 1., 1., 1., 1., 1., 1.])
  • 单位数组(对角线为1)
  # np.eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
np.eye(3,2)

运行结果

array([[1., 0.],
     [0., 1.],
     [0., 0.]])
  • 初始化数组
np.empty((3,2,3))   # 返回给定形状和类型的新数组,而不初始化条目

运行结果

array([[[7.93629587e-313, 5.08887615e-322, 0.00000000e+000],
      [0.00000000e+000, 8.45593933e-307, 1.16095484e-028]],

     [[5.86679289e+276, 7.89960735e+068, 2.54062776e-076],
      [6.09343068e-013, 3.18539647e-120, 1.41171829e-095]],

     [[1.14035671e-119, 5.28633943e-085, 3.02259522e-110],
      [2.91237123e+257, 4.71294503e+257, 2.60097503e-306]]])
  • 类range数组
 # arange([start,] stop[, step,], dtype=None)
np.arange(3,9)
np.arange(3,9).reshape(2,3)  # 一般与reshape一起使用

运行结果

array([3, 4, 5, 6, 7, 8])
array([[3, 4, 5],
     [6, 7, 8]])
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值