Numpy是Numerical Python的英文缩写,是最常用的Python包之一,主要特点如下:

1、Numpy以N维(N=1或2是比较常见的)数组对象(ndarray)形式组织数据集,其中要求数据集中各变量的类型相同。Numpy的1维数组对应向量,2维数组对应矩阵。数据访问简单灵活,仅需通过指定位置编号(也称索引,从0开始编写)访问相应行列位置上的元素。

2、Numpy拥有丰富的数学运算和统计函数,能够方便地进行基本统计分析和各种矩阵运算等。

一、Numpy数组的创建和访问

import numpy as np
# 创建一个Numpy的1维数组,数组中的数据元素来自python的列表(list)
# np.array可将列表转换为Numpy的N维数组
data = np.array([1,2,3,4,5,6,7,8,9])
# 显示数组内容
print("Numpy的1维数组:\n{0}".format(data))
# 显示数组元素的数据类型
# .dtype是numpy数组的属性之一,存储了数组元素的数据类型
# int32是python的数据类型之一,表示包含符号位的32位整型数,还有int64(64位整型数)、float32(标准32位单精度浮点数)、float64等
print("数据类型:%s" %data.dtype)
print("1维数组中各元素扩大十倍:\n{0}".format(data*10))
print("访问第2个元素:{0}".format(data[1]))

data = np.array([[1,3,5,7,9],[2,4,6,8,10]])
print("Numpy的2维数组:\n{0}".format(data))
print("访问2维数组中第1行第2列元素:{0}".format(data[0,1]))
print("访问2维数组中第1行第2至4列元素:{0}".format(data[0,1:4]))
print("访问2维数组中第1行所有元素:{0}".format(data[0,:]))

二、Python列表的补充说明

data = [[1,2,3,4,5],['A','B','C','D','E']]
print('data是python的列表:\n{0}'.format(data))
# 通过np.array将列表转成数组时,因数组要求数据类型一致,所以这里自动将数值型转换为字符型
array1 = np.array(data)
# .shape是numpy数组的属性之一,存储数组的行数和列数
print('array1是numpy的N维数组:\n %s \n array1的形状: %s' %(array1,array1.shape))

三、Numpy数组的计算

array2 = np.arange(10)
print("array2:\n{0}".format(array2))
print("array2的基本描述统计量:\n 均值:%f,标准差:%f,总和:%f,最大值:%f" %(array2.mean(),array2.std(),array2.sum(),array2.max()))
print("array2的累计和:{0}".format(array2.cumsum()))
print("array2开平方:\n{0}".format(np.sqrt(array2)))

# 指定随机数种子
# 指定种子的目的是确保每次运行代码时生成的随机数可以再现,否则,每次运行代码生成的随机数会不相同
np.random.seed(123)
# np.random.randn(10)生成包含10个元素且服从标准正态分布的一维数组
array3 = np.random.randn(10)
print("array3:\n{0}".format(array3))
# 利用sort()对数组元素排序,排序结果并不覆盖原数组内容
print("array3排序结果:\n{0}".format(np.sort(array3)))
# rint()函数对数组元素做四舍五入
print("array3四舍五入到最近整数:\n{0}".format(np.rint(array3)))
# sign()函数求数组元素的正负符号,1表示正号,-1表示负号
print("array3各元素的正负号:{0}".format(np.sign(array3)))
# where()函数依次对数组元素进行逻辑判读
# where()需指定判断条件,满足条件的返回第一个值,否则返回第二个值
# 如果省略第2和第3个参数,将给出满足条件的元素索引号
print("array3各元素非负数的显示‘正’,负数显示‘负’:\n{0}".format(np.where(array3>0,'正','负')))
print("array3各元素非负数的显示‘正’,负数显示‘负’:\n{0}".format(np.where(array3>0)))
# 将两个数组相同位置上的元素相加
print("array2+array3的结果:\n{0}".format(array2+array3))

四、随机数的补充说明和矩阵初步

np.random.seed(123)
# 利用numpy的random.normal()函数生成2行5列的2维数组,数组元素服从均值为5,标准差为1的正态分布
# 利用floor函数向下取整,返回不大于输入参数的最大整数。得到距各元素数组最近的最大整数
x = np.random.normal(5,1,(2,5))
print(x)
X = np.floor(x)
# 利用eye(5)函数生成一个5行5列单位矩阵
Y = np.eye(5)
print('X:\n{0}'.format(X))
print('Y:\n{0}'.format(Y))
# 利用dot()函数计算矩阵X和矩阵Y(单位矩阵)的乘积,将得到2行5列的矩阵
print('X和Y的点积:\n{0}'.format(np.dot(X,Y)))

五、矩阵运算

# 导入numpy的linalg模块下有关矩阵运算的函数
from numpy.linalg import inv,svd,eig,det
# 生成5行5列的2维数组X(可视为一个矩阵),数组元素服从标准正态分布
X = np.random.randn(5,5)
print(X)
# X.T是X的转置,与X相乘的结果保存在mat
mat = X.T.dot(X)
print(mat)
print('矩阵mat的逆:\n{0}'.format(inv(mat)))
print('矩阵mat的行列式值:\n{0}'.format(det(mat)))
print('矩阵mat的特征值和特征向量:\n{0}'.format(eig(mat)))
print('矩阵mat做奇异值分解:\n{0}'.format(svd(mat)))

np.ceil(多维数组):对多维数组的各个数向上取整

np.floor(多维数组):对多维数组的各个数向下取整

np.expand_dims(x,axis = 0):在x的第一维度上插入一个维度,axis=1,在x的第二个维度上插入一个维度

np.around()函数对输入浮点数执行5舍6入,5做特殊处理(小数点最后一位为5的舍入为与其值最接近的偶数值)。

# 向下取整
np.floor([1.3, 1.5, 2.5, 2.6, 3.4, 3.5, 4.1, 4.9])

out: array([1., 1., 2., 2., 3., 3., 4., 4.])

# 向上取整
np.ceil([1.3, 1.5, 2.5, 2.6, 3.4, 3.5, 4.1, 4.9])

out: array([2., 2., 3., 3., 4., 4., 5., 5.])
# np.concatenate()能够一次完成多个数组的拼接
# 对于一维数组拼接,axis的值不影响最后的结果
np.concatenate((np.arange(6), np.arange(5, -1, step=-1)))
out: array([0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0])# axis=0表示沿着数组垂直方向进行拼接
a=np.array([[1,2,3],[4,5,6]])
b=np.array([[11,21,31],[7,8,9]])
np.concatenate((a,b),axis=0)
out: array([[ 1,  2,  3],[ 4,  5,  6],[11, 21, 31],[ 7,  8,  9]])# axis=1表示沿着数组水平方向进行拼接
np.concatenate((a,b),axis=1)
out: array([[ 1,  2,  3, 11, 21, 31],[ 4,  5,  6,  7,  8,  9]])

# np.around(a, decimals=0, out=None)
# 参数解析:
# a: array_like,输入数据;
# decimals: int,指定保留小数点后的位数;
# out: ndarray,输出数组,与输入维度一致;
import numpy as np
np.around([1.3, 1.5, 2.5, 2.6, 3.4, 3.5, 4.1, 4.9])

out: array([1., 2., 2., 3., 3., 4., 4., 5.])

np.around([1.5, 2.5, 3.5, 4.5, 7.5, 11.5, 14.5, 24.5])

out: array([ 2.,  2.,  4.,  4.,  8., 12., 14., 24.])

np.around([1.94, 1.55, 2.76], decimals = 1)

out: array([1.9, 1.6, 2.8])

根据元素的值找到元素的具体位置

x = np.arange(24).reshape(4, 6)
x
out: array([[ 0,  1,  2,  3,  4,  5],[ 6,  7,  8,  9, 10, 11],[12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23]])positions = [2,3,5,7,17,19]
xins = np.isin(x, positions)
xins
out: array([[False, False,  True,  True, False,  True],[False,  True, False, False, False, False],[False, False, False, False, False,  True],[False,  True, False, False, False, False]])np.where(xins)
# (0,2) (0,3) (0,5)
out: (array([0, 0, 0, 1, 2, 3], dtype=int64),array([2, 3, 5, 1, 5, 1], dtype=int64))

np.squeeze()函数可以删除数组形状中的单维度条目,即把shape中为1的维度去掉,但是对非单维的维度不起作用。

np.mod():x1 % x2,结果的符号和x2的符号相同,x1,x2均为正数时,结果为其余数,有一个为负数时,结果为相除后的向下取整+x2的符号

python中的Numpy包相关推荐

  1. python画pr曲线代码_利用Python中的numpy包实现PR曲线和ROC曲线的计算

    闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在 python 环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy ...

  2. python绘制pr曲线图_利用Python中的numpy包实现PR曲线和ROC曲线的计算!

    闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在python环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy包. ...

  3. python 计算曲线面积_利用Python中的numpy包实现PR曲线和ROC曲线的计算!

    闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在python环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy包. ...

  4. python中使用numpy包的向量矩阵相乘np.dot和np.matmul

    一直对np的线性运算不太清晰,正好上课讲到了,做一个笔记整个理解一下 1.向量和矩阵 在numpy中,一重方括号表示的是向量vector,vector没有行列的概念.二重方括号表示矩阵matrix,有 ...

  5. python有哪些作用-Python中的NumPy是什么?有什么作用?

    Python中的NumPy是什么?NumPy或NumericPython是用于科学计算的通用数组处理python软件包.它包含许多强大的功能,其中包括:具有许多有用功能的健壮的多维数组对象.用于将其他 ...

  6. [转载] python中的numpy模块和pandas模块的区别_numpy 模块和 pandas 模块

    参考链接: Python中的numpy.radians和deg2rad 一.numpy模块 1.1 numpy 简介 numpy是python的一种开源的数值计算扩展库,这种库可用来存储和处理大型nu ...

  7. python 去除panda安装包_沉淀,再出发:python中的pandas包

    沉淀,再出发:python中的pandas包 一.前言 python中有很多的包,正是因为这些包工具才使得python能够如此强大,无论是在数据处理还是在web开发,python都发挥着重要的作用,下 ...

  8. Python中利用numpy将数组(矩阵)存成csv文件,将csv文件读取为数组(矩阵)

    Python中利用numpy将数组(矩阵)存成csv文件,将csv文件读取为数组(矩阵) 本博客转载自:https://blog.csdn.net/vernice/article/details/50 ...

  9. 如何在Python中安装NumPy

    公众号-IT赶路人,专注分享与IT相关的知识! NumPy是Python编程不可或缺的一个库.在本文中,我们将学习如何在Python中安装NumPy.以下要点将在本文中介绍,让我们开始吧! 什么是Nu ...

  10. 树莓派python中安装numpy,pandas,torch,torchvision失败,ERROR: Could not find a version that satisfies the req

    树莓派python中安装numpy,pandas,torch,torchvision问题 安装失败现象 python通过pip安装torch错误ERROR: Could not find a vers ...

最新文章

  1. AirPods Pro真香,送一款!
  2. 使用Rancher管理Docker
  3. 如何将深度学习研究论文实现为代码的几个要点
  4. 加快Tensorflow和Keras图像数据集的训练速度
  5. 这道题你怎么看?长春理工大学2021电子竞赛
  6. Windows Updateエラー 80072EE2
  7. 使用 ADO.NET 的 NextResult 方法取得多个 Result Set
  8. 基于mycat的mysql_基于mycat实现mysql的读写分离
  9. C/C++工程师需要掌握哪些技能?他们的工资这么高,是有原因的!
  10. Java webservice 将晦涩难懂的参数名修改为容易理解的名称
  11. 重磅消息!三星、联想和微软的设备将会搭载Android 12L
  12. Linux由管道组成的值得学习的命令
  13. python自动化测试怎么提高效率_自动化测试更适合缺陷预防,而不是提高测试效率...
  14. 使用octotree 出现Error: Connection error octotree解决办法
  15. PROFINET工业以太网教程(10)——GSD文件
  16. Kmeans参数n_clusters_labels_centers_
  17. 【ArcGIS小技巧视频教程】(1):GIS数据来源下载攻略
  18. canvas流星雨 数据流
  19. Everyday English(四)
  20. Problem Driven Pattern, Coaching Pattern Series

热门文章

  1. MySQL讲义第 43 讲——select 查询之查询练习(一)
  2. Could not resolve dependencies for project com.koolearn:koo-b2b-tesa-api:jar:1.0-dev-SNAPSHOT
  3. cs1.6服务器修改游戏类型,如何自己架设CS1.6服务器?
  4. 软件版本中的Alpha,Beta,RC,Trial是什么意思?
  5. 用C语言打印平行四边形
  6. windows10更新怎么关闭
  7. Invalid bound statement (not found): com.lyf.eduservice.mapper.EduCourseMapper.getpublishInfo
  8. 联网时显示已连接无法连接到服务器怎么办,路由器显示已连接不可上网怎么办?...
  9. 性能、应用、安装,选择LoRaWAN温湿度传感器的关键
  10. TSL2561 GY2561 模块 MSP430 单片机 程序 STM32 程序 光强传感器 MSP430F5529