Numpy模块 简易使用教程

  • 1.数组创建
  • 2.数组基本属性-维度、尺寸、数据类型
  • 3.数组访问-索引、切片、迭代
  • 4.数组的算术运算-加减乘除、转置求逆、极大极小
  • 5.通用函数-sin,cos,exp,sqrt
    • np.dot与np.matmul的区别
  • 6.数组的合并和分割
    • 6.1 np.vstack(),np.hstack()
    • 6.2 np.stack()
  • 7.list与数组相互转换
    • 7.1 list() vs tolist()
  • 8.np.random
    • 8.1 randn()和rand()
    • 8.2np.random.choice()
    • 8.3 np.random.uniform()
  • 9.常用方法
    • x.astype(int)
    • np.squeeze()
    • np.std()
    • np.prob()
    • array.copy()
    • np.linspace()
    • np.vstack()
    • np.c_ ()
    • arr.ravel()

Numpy 是pythond科学计算的基础模块,常被用作多维数据容器,能够完成基本的科学计算操作

1.数组创建

import numpy as np# 1.创建数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([(1.3, 9, 2.0), (7, 6, 1)])
arr3 = np.zeros((2, 3))
arr4 = np.identity(3) # 三维度单位阵
arr5 = np.random.random(size=(2, 3))

2.数组基本属性-维度、尺寸、数据类型

# 2.数组属性
print(arr2.shape)   # 矩阵的形状 (2, 3)
print(arr2.ndim)    # 矩阵的秩 2
print(arr2.size)    # 矩阵所有元素个数 6
print(arr2.dtype.name) # 矩阵中元素的类型 float64

3.数组访问-索引、切片、迭代

# 3.数组访问
print(arr2[:1,:1])   # [[1.3]]
for row in arr2:print(row)
for element in arr2.flat:print(element)

4.数组的算术运算-加减乘除、转置求逆、极大极小

# 4.数组运算
arr9 = np.array([[2, 1], [1, 2]])
arr10 = np.array([[1, 2], [3, 4]])
# 逐元素的+,-,*,/,%,操作
print(arr9 - arr10)
print(arr9**2)
print(arr9 * 3)
print(arr9 * arr10)         # 等价于 np.multiply(arr9, arr10)
print(np.dot(arr9, arr10))  # 矩阵叉积, 在二维度的情况下和矩阵乘积的结果一致
print(np.matmul(arr9, arr10))  # 矩阵乘积
# 矩阵转置,求逆,求和,求极大,求极小
print(arr9.T)
print(np.linalg.inv(arr9))
print(arr9.sum(), arr9.max(), arr9.min())  # 6 2 1

5.通用函数-sin,cos,exp,sqrt

# 5.通用函数sin,cos,都是针对整个数组逐元素操作
print(np.exp(arr9))
print(np.sin(arr9))
print(np.sqrt(arr9))

np.dot与np.matmul的区别

在二维度的情况下和矩阵乘积的结果一致

print(np.dot(arr9, arr10))  # 矩阵叉积,
print(np.matmul(arr9, arr10))  # 矩阵乘积

参考博文:https://blog.csdn.net/acterminate/article/details/96151132

6.数组的合并和分割

# 6.数组的合并和分割
arr11 = np.vstack((arr9, arr10))  # 纵向合并,沿着第0维度合并
arr12 = np.hstack((arr9, arr10))  # 横向合并,沿着第1维度合并
print(np.vsplit(arr12, 2))        # 纵向切割
print(np.hsplit(arr12, 2))        # 横向切割

6.1 np.vstack(),np.hstack()

np.vstack()沿着第0维度堆叠
np.hstack()沿着第1维度堆叠

只有两个维度:
np.vstack(tuple)垂直方向堆叠成numpy.array
np.hstack(tuple)水平方向堆叠成numpy.array

注意:
tuple=(a1,a2,a3,…an)
a1,a2,a3,…an除了堆叠的那个维度,剩余的维度尺寸要求完全一致.

>>> a1=numpy.random.randn(2,2)
>>> a2=numpy.random.randn(3,2)
>>> a=numpy.vstack((a1,a2))
>>> a
array([[ 0.67667278, -0.3318424 ],[-0.2550355 , -0.74132559],[ 0.43534239,  1.46399303],[-0.86049107,  2.03871322],[-0.01824614,  0.46310639]])>>> b1=numpy.random.randn(2,3)
>>> b2=numpy.random.randn(2,1)
>>> b=numpy.hstack((b1,b2))
>>> b
array([[-0.69216195,  0.43455353, -0.5628851 ,  1.98854944],[ 1.73648473,  1.11249471, -0.8067703 , -0.53433626]])
>>> import numpy
>>> a1=numpy.random.randn(2,2,2)
>>> a2=numpy.random.randn(2,2,2)
>>> a=numpy.vstack((a1,a2))
>>> a[0]
array([[ 0.06585097, -0.80433501],[ 1.77412345, -0.5875084 ]])
>>> b=numpy.hstack((a1,a2))
>>> b.shape
(2, 4, 2)
>>> a.shape
(4, 2, 2)

参考博文:https://blog.csdn.net/nanhuaibeian/article/details/100597342

6.2 np.stack()

stack() 函数是vstack(),与hstack()结合升级.

Parameters:
arrays : sequence of array_like
Each array must have the same shape.
axis : int, optional
The axis in the result array along which the input arrays are stacked.
out : ndarray, optional
If provided, the destination to place the result. The shape must be correct, matching that of what stack would have returned if no out argument were specified.
Returns:
stacked : ndarray
The stacked array has one more dimension than the input arrays.

np.stack(tuple, axis=0) 等价于 np.vstack(tuple)
np.stack(tuple, axis=1) 等价于 np.hstack(tuple)

参考博文:https://blog.csdn.net/u013019431/article/details/79768219

7.list与数组相互转换

list–>np.array

a=[1,2,3]
b=np.array(a)

np.array->list

c=b.tolist()

7.1 list() vs tolist()

  1. 直接用list()函数 # 转换成 第0维的每一个元素(Numpy.array) 组成的list
  2. 用array.tolist()函数 # 与原来的array的数据形式是一样的,只不过每一维度都是一个list

结论–tolist() 方法转换的更彻底,list()方法只转换了源数据的第一个维度。
如果np.array是一维,两者没有区别。但如果是二维结果是不同的。

>>> import numpy >>> a1=numpy.random.rand(3)
>>>>> a1
array([0.26546725, 0.27424911, 0.18618962])
>>> list(a1)
[0.26546725247934855, 0.27424910895802035, 0.18618962270208705]
>>> a1.tolist()
[0.26546725247934855, 0.27424910895802035, 0.18618962270208705]>>> a2
array([[0.25176667, 0.78656379, 0.17814966],[0.38749959, 0.195838  , 0.91929009]])
>>> list(a2)
[array([0.25176667, 0.78656379, 0.17814966]), array([0.38749959, 0.195838  , 0.91929009])]
>>> a2.tolist()
[[0.25176666870818276, 0.7865637882478266, 0.17814966253473885], [0.3874995863899837, 0.19583799515418743, 0.9192900894591074]]>>>

参考博文:https://www.cnblogs.com/wxiaoli/p/9550382.html

8.np.random

于随机/随机数相关的一个模块。

8.1 randn()和rand()

rand()-从标准正态分布中随机抽样
randn()-从标准正态分布中随机抽样,值处于[0,1]之间

>import numpy
>a=numpy.random.randn(2)
>a
array([2.14862612, 2.64967285])
>b=numpy.random.randn(2,4)
>b
array([[ 1.12026781, -0.35804222,  0.40199839,  0.8530957 ],[ 0.17434359,  0.77714432, -1.050777  , -1.4872941 ]])
>c=numpy.random.randn(2,4,3)
>c
array([[[-0.63199863,  0.3026388 ,  1.52031827],[-0.02198394,  1.21513216, -0.0347614 ],[ 0.05571264,  0.38651474, -1.24363781],[-1.93182679,  1.1883758 , -1.90170175]],[[-0.65822958,  0.52109845, -0.49748048],[ 0.66535972, -0.118965  ,  1.55862421],[ 0.58604542,  0.44303396, -1.27043267],[-0.26475081,  0.91481557, -0.7255539 ]]])
>a1=numpy.random.rand(2)
>a1
array([0.29220946, 0.56908742])

8.2np.random.choice()

从xxx中随机抽取元素

numpy.random.choice(a, size=None, replace=True, p=None)

a : 一维数组或整数
size : 生成样本的大小
replace : bool类型 False表示样本中不允许有重复值 True…
p : 给定数组中元素出现的概率

np.random.choice(5,3,p=[0,0,0,0,1])
array([4, 4, 4], dtype=int64)

参考文档:https://www.cnblogs.com/cavaliers20160620/p/8964784.html

8.3 np.random.uniform()

从[1,2]的均匀分布中随机采样64个数据,并且将尺寸由 (64,)转换成(64,1)

np.random.uniform(1, 2, size=64)[:, np.newaxis]

9.常用方法

x.astype(int)

改变数组中的数据类型

x=np.array([1,2,2.5])
x.astype(int)

np.squeeze()

去除中维度为1 的维

In [20]: d=np.array([[[1],[1]],[[1],[1]]])
In [22]: d.shape
Out[22]: (2, 2, 1)

In [23]: e=np.squeeze(d)
In [25]: e.shape
Out[25]: (2, 2)

np.std()

计算所有元素的标准差

numpy.std(data)

计算每一列的标准差

numpy.std(data, 0)

计算每一行的标准差

numpy.std(data, 1)

np.prob()

返回给定维度上各个元素的乘积

>>> import numpy as np
>>> a=np.array([[2,3],[4,5]])
>>> a
array([[2, 3],[4, 5]])>>> np.prod(a)
120
>>> np.prod(a,axis=0)
array([ 8, 15])>>> np.prod(a,axis=1)
array([ 6, 20])

array.copy()

直接名字赋值,两个变量指向同一块地址,其中任何一个数据操作都会影响另一个数组。用数组的.copy()方法,则会建立一个与原来完全独立但是数字完全相同的一个数组。

import numpy as np
ar1 = np.arange(10)
print(ar1)ar2 = ar1
print(ar2 is ar1)ar1[2] = 9
print(ar1,ar2)
#ar1和ar2 指向同一个值,所以ar1改变,ar2一起改变print('-------------------------------')ar3 = ar1.copy()
print(ar3 is ar1)
ar1[0] = 9
print(ar1,ar3)
#coyp方法生成数组及其数据的完整拷贝j

输出结果:

    [0 1 2 3 4 5 6 7 8 9]True[0 1 9 3 4 5 6 7 8 9] [0 1 9 3 4 5 6 7 8 9]-------------------------------False[9 1 9 3 4 5 6 7 8 9] [0 1 9 3 4 5 6 7 8 9]

参考博文:https://blog.csdn.net/weixin_30935137/article/details/80822005

np.linspace()

输出(-1,1)之间的等间距15个数

np.linspace(-1, 1, 15)

np.vstack()

写在一行的for循环,每次将15个数作为一行堆叠64次,生成一个64*15的矩阵

np.vstack([np.linspace(-1, 1, 15) for _ in range(64)])

np.c_ ()

np.c_ 用于连接两个矩阵
np.c 中的c 是 column(列)的缩写,就是按列叠加两个矩阵,就是把两个矩阵左右组合,要求行数相等。
参考博文:https://blog.csdn.net/qq_33728095/article/details/102512600

arr.ravel()

将多维数组转换成一维数组

>>> a = numpy.array([[1,2],[3,4]])
>>> a.ravel()
array([1, 2, 3, 4])
>>>

Python模块(2)-Numpy 简易使用教程相关推荐

  1. Python模块(8)-sklearn 简易使用教程

    sklearn 简易使用教程 1.scikit-learn的数据集 2.scikit-learn 的训练和预测 scikit-learn 是在Numpy,SciPy,Matplotlib三个模块上编写 ...

  2. Python模块(7)-SciPy 简易使用教程

    SciPy 简易使用教程 1. 符号计算 2. 函数向量化 3. 波形处理scipy.signal 3.1 滤波器 3.2 波峰定位 基于numpy的一个高级模块,为数学,物理,工程等方面的科学计算提 ...

  3. python模块(5)-Matplotlib 简易使用教程

    Matplotlib简易使用教程 0.matplotlib的安装 1.导入相关库 2.画布初始化 2.1 隐式创建 2.2 显示创建 2.3 设置画布大小 2.4 plt.figure()常用参数 3 ...

  4. Python模块(1)-Argparse 简易使用教程

    argparse 简易使用教程 1基本函数 2例子程序演示 3常用参数解释 4argparse模块整理的缘起 1基本函数 argparse是Python中用于命令行中进行参数解析的一个模块,可以自动生 ...

  5. python模块(6)-Pandas 简易使用教程

    Pandas 简易教程 1.Pandas简介 2.创建 2.1创建dataFrame 2.2创建Series 3.dataframe数据访问 3.1 获取一列--列标签 3.2 获取多列--列标签列表 ...

  6. Python模块(3)--PIL 简易使用教程

    PIL模块-用与记 1.图片导入Image.open() 2.图像显示.show() 4.查看图片属性.format,.size,.mode 3.图像格式转换.convert() 4.图像模式&quo ...

  7. python安装numpy模块教程_Windows系统中安装Python模块pip numpy matplotlib

    Windows系统中安装Python模块pip numpy matplotlib ]http://blog.csdn.net/guyuealian/article/details/52767125 一 ...

  8. Windows系统中安装Python模块pip numpy matplotlib

    Windows系统中安装Python模块pip numpy matplotlib  [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/deta ...

  9. python 模块学习--Numpy

    Numpy是Python的一个科学计算库,提供了矩阵运算的功能.安装方法可以直接使用pip install numpy命令,也可以在http://sourceforge.net/projects/nu ...

最新文章

  1. 因果关系是通向强AI的阶梯or作用被夸大?
  2. android+多米音乐+自动播放,android 高仿多米音乐播放器
  3. php curl向另一个页面post,一个PHP CURL的POST提交遇到的问题
  4. 【待完善】make: command not found,以及libtool.m4 and ltmain.sh have a version mismatch问题的解决方案...
  5. Qt图形界面编程入门(5)
  6. Python 基本语法规则
  7. 【零基础学Java】—网络编程(五十三)
  8. cxf超时设置不起效_晚上不限时,白天1小时!上海限时长停车场来了
  9. opencv识别圆的代码(转)
  10. alwayson10-创建alwayson高可用性组侦听器
  11. zz JQuery 插件
  12. Vue 读取Excel数据
  13. 2020软考程序员考试大纲要求的必会单词
  14. python-office自动化办公:Word批量转PDF
  15. JavaWeb——JQuery之高级案例实战(打开网页自动弹出广告效果、抽奖效果实现)
  16. npm包--淘宝镜像下载
  17. TCR-seq(T细胞受体测序)
  18. 【GNN报告】Mila实验室/蒙特利尔大学朱兆成:基于图神经网络的知识图谱推理
  19. 笔记本nc10装linux,三星nc10笔记本如何设置U盘启动
  20. 用伪造的TCP协议头花式欺骗核心转发设备?

热门文章

  1. 移植tslib到开发板及部分问题解决
  2. BootLoader与Linux内核的参数传递
  3. S3C2440 WINCE6将USB DEVICE改成USB HOST,实现两个USB HOST
  4. python安装后cmd找不到_关于Python3.6环境中,virtualenv找不到命令的解决方法
  5. android 安装第三方app,Android识别预装的第三方App方法实例
  6. 怎么跟踪php代码,第九节 PHP 跟踪调试代码 XDebug
  7. 2引擎帮助文档_Simcenter Amesim 16液压部分帮助文档中英文对照(2)
  8. 【转】How to install VNC server on ubuntu 14.04
  9. 【转】.NET 自带的动态代理+Expression 实现AOP
  10. 解决:VS中进行Qt开发,编译时报错:打不开QWidgets.h等文件的问题