python之NumPy简介

1.NumPy是什么

    NumPy是python中的一款高性能科学计算与数据分析的基础包,NumPy定义了矩阵和数组,提供存储单一类型的多维数租(ndarray)和矩阵(Matrix)以及相关运算,功能和Matlab中的矩阵运算相似。NumPy常和稀疏矩阵计算包Scipy配合使用,更加方便。

   NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

 

2.NumPy的使用

    NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

SciPy 是一个开源的 Python 算法库和数学工具包。

SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

 

3.创建n维数组Ndarray   

(参考资料https://blog.csdn.net/u012149181/article/details/78913167

(1)创建一个指定数组,由下可以知道arr其类型为ndaraay

import numpy as np
arr = np.array([ [1,2,3],[4,5,6] ])
print(type(arr))
print(arr)

<class 'numpy.ndarray'>
[[1 2 3]
 [4 5 6]]

(2) np.random.randn()

import numpy as np
from numpy.random import randn  

arr = randn(6).reshape(2,3)
print(arr)

[[ 0.20681711  2.73567805 -2.21307579]
 [ 0.57554082  1.28322887  0.02147844]]

如上图生成一个个数为6,2行3列的数组,randn用来产生一组服从标准正太分布的矩阵。

  • 标准正态分布—-standard normal distribution
  • 标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。

(3) np.random.rand()

如下表示创建一个3行4列的,值在[0,1)之间的array,[0,1)表示包含0,不包含1.

import numpy as np

arr = np.random.rand(3,4)
print(arr)

[[ 0.2384065   0.79948885  0.97242851  0.06798698]
 [ 0.29504884  0.27347259  0.80683931  0.13284965]
 [ 0.20813522  0.70809042  0.23529395  0.81802537]]

(3)np.random.randint()

常用来产生随机整数

import numpy as np

arr = np.random.randint(2,size=5)  # 返回[0,2)之间的整数,所以只有0,1
print(arr)  # [0 0 0 0 1]

arr = np.random.randint(1,6) #返回一个在[1,6)中的随机整数
print(arr)  # 1

arr = np.random.randint(-3,3,size=(2,3))  #产生一个值在[-3.3)之间的2行3列的数组
'''
[[-1  0  2]
 [-3 -1 -1]]
'''

(4)生成[0,1)浮点数

print('-----------random_sample--------------')
print(np.random.random_sample(size=(2,2)))
print('-----------random--------------')
print(np.random.random(size=(2,2)))
print('-----------ranf--------------')
print(np.random.ranf(size=(2,2)))
print('-----------sample--------------')
print(np.random.sample(size=(2,2)))

结果为

(5) np.random.choice()

生成随机数

arr = np.random.choice(5, 3, replace=False)  # 生成大小在[0,5),长度为3,且值不重复的数组
print(arr)   # [2 1 4]

(6) np.random..seed()

  • np.random.seed()的作用:使得随机数据可预测。
  • 当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数
    np.random.seed(0)
    print(np.random.random(5))   # [ 0.5488135   0.71518937  0.60276338  0.54488318  0.4236548 ]
    np.random.seed(0)
    print(np.random.random(5))  # [ 0.5488135   0.71518937  0.60276338  0.54488318  0.4236548 ]

    如上两个seed相同,生成的随机数相同

(7)0数组

import numpy as np

print(np.zeros(5,float))  #生成一行5列,数据类型为float的0数组
# [ 0.  0.  0.  0.  0.]
print(np.zeros([2,3]))  #生成2行3列的0数组
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

(8) 1数组

print(np.ones(5,float))  #生成一行5列,数据类型为float的1数组
# [ 0.  0.  0.  0.  0.]
print(np.ones([2,3]))  # 生成2行3列1数组
# [[ 1.  1.  1.]
# [ 1.  1.  1.]]

4.shape用法,获取维数的长度

arr = np.eye(4)  # 生成4行4列的单位矩阵,同eye(4,4)
print(arr)
'''
[[ 1.  0.  0.  0.]
 [ 0.  1.  0.  0.]
 [ 0.  0.  1.  0.]
 [ 0.  0.  0.  1.]]
'''
print(arr.shape)   # (4, 4)
print(arr.shape[0])  # 4 获取第一维的长度
print(arr.shape[1])  # 4 获取第二维的长度
print(arr.dtype)  # float64 数组中的元素类型

 

4 numpy与matplotlib的使用

画出标准正太分布的数据直方图

函数原型: numpy.random.normal(loc=0.0, scale=1.0, size=None)
默认均值为0,方差为1,即创建服从标准正太分布的矩阵。

import numpy as np
from matplotlib import pyplot as plt

p1 = np.random.normal(size = 10000)  # 新建大小为10000的随机数
print(p1)
plt.hist(p1)  # 绘制柱形图
plt.show()   # 显示

结果图如下:

 

更多内容见如下参考资料

https://www.runoob.com/numpy/numpy-tutorial.html

https://blog.csdn.net/tugangkai/article/details/79161063

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值