Python的Numpy库简述
numpy 是 python 的科学计算库
import numpy as np
1、使用numpy读取txt文件
- # dtype = "str":指定数据格式
- # delimiter = "\t":指定分割符
- # skip_header = 1:跳过第一行
- npinfo = np.genfromtxt("titanic_train.txt", delimiter = "\t", dtype = "U75", skip_header = 1)
2、ayyay数组,数据类型是必须相同。
- vector = np.array([5, 10, 15, 20])
- matrix = np.array([[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]])
- print(vector)
- print(matrix)
3、numpy的数据类型,一般用到四种数据类型 bool、 int32/64、 float32/64、 string
- print(vector.dtype)
- print(matrix.dtype)
4、获取第1行的第4个数
- npinfo[0, 3]
- # 取1-3行和1-3列数据
- npinfo[0: 3, 0: 3]
- # 如果:省略前后数字表示所有数据
- npinfo[:, :]
5、判断array中元素的值
- vector == 10
- matrix[:, 0] == 25
6、取出等于10的元素
- token = (vector == 10)
- vector[token]
7、取出有25的这一行
- token_25 = (matrix[:, 0] == 25)
- matrix[token_25]
8、string 转 float 类型
- vector = np.array(["", "", "", ""])
- vector = vector.astype(float)
- print(vector)
9、基本运算
- vector.sum() # 求和
- vector.mean() # 均值
- matrix.sum(axis = 0) # 按列求和
- matrix.sum(axis = 1) # 按行求和
10、缺失值填补
- nan_4 = np.isnan(npinfo[:, 4])
- npinfo[nan_4, 4] = 0 # 缺失值填补,对有缺失值的第4列填补0
11、使用 numpy 创建数组和矩阵
- # 创建一个3行5列的矩阵
- a = np.arange(15).reshape(3, 5)
- print(a)
12、查看当前数组是几维的
- a.ndim
13、其它查看
- a.dtype
- a.size
14、创建一个空矩阵
- np.zeros((3, 4))
15、创建一个1矩阵 3维
- np.ones((3, 4, 5), dtype = np.int32)
16、创建有步长的矩阵:np.arange( 起始,结束,步长 )
- np.arange( 10, 15, 1 )
17、随机初始化矩阵
- np.random.random((3, 4))
18、创建一个指定数量的矩阵
- # np.linspace( 起始,结束,数量 )
- from numpy import pi
- np.linspace( 0, 2*pi, 100 )
19、求正弦
- np.sin(np.linspace( 0, 2*pi, 100 ))
20、数组计算
- a = np.array([10, 15, 20, 25])
- b = np.arange(4)
- a - b
- b ** 2 #注意:这个是n次方,不是乘法。
- a < 20
21、# 求内积 外积
- A = np.array( [[1, 2],
- [0, 3]] )
- B = np.array( [[2, 0],
- [3, 4]] )
- # 内积 对应位置相乘
- A * B
- # 矩阵相乘
- A.dot(B)
- np.dot(A, B)
- # 矩阵相乘 原理
- #A=
- #a b c
- #d e f
- #g h i
- #B=
- #A D
- #B E
- #C F
- #A.dot(B)=
- #aA+bB+cC aD+bE+cF
- #dA+eB+fC dD+eE+fF
- #gA+hB+iC gD+hE+iF
22、e的x次幂
- A = np.arange(3)
- np.exp(A)
23、开根号
- np.sqrt(A)
24、向下取整
- C = np.floor(10*np.random.random((3, 4)))
25、转化为行向量
- C.ravel()
26、重新shape,如:由3行4列转为2行6列
- C.shape = (2, 6)
27、行列转置
- C.T
28、其它reshape方法
- C.resize((2, 6))
- C.reshape(3, -1)
29、矩阵拼接
- x = np.floor(10*np.random.random((3, 4)))
- y = np.floor(10*np.random.random((3, 4)))
- # 按行拼接
- np.vstack((x, y))
- # 按列拼接
- np.hstack((x, y))
30、矩阵切分
- x = np.floor(10*np.random.random((3, 12)))
- # 按列切成3份
- np.hsplit(x, 3)
- # 如果想切两刀怎么办?
- np.hsplit(x, (3, 5))
- y = np.floor(10*np.random.random((12, 2)))
- # 按行切分
- np.vsplit(y, 3)
31、矩阵相互赋值问题
- z = np.arange(12)
- t = z # 共享内存
- t is z # 结果是True
- # print(id(t)) 和 print(id(z)) 的结果是一样的。
- t1 = z.view() #共享数据,但不共享内存
- t1 is z # 结果是False
- # print(id(t)) 和 print(id(z)) 的结果是不同的。
- t2 = z.copy() #完全是两个对象
32、排序和索引
- data = np.sin(np.arange(20).reshape(5, 4))
- # 找最大值
- ind = data.argmax(axis = 0) # 最大值的索引
- data_max = data[ind, np.arange(data.shape[1])]
- print(data_max)
- 不过有最函数:data.max(axis = 0)
33、# 排序
- sx = np.floor(10*np.random.random((3, 4)))
- print(np.sort(sx, axis = 0)) # 按列排序
- print(np.sort(sx, axis = 1)) # 按行排序
- 也可以这么写:sx.sort(axis = 1)
34、复制 tile
- a = np.arange(0, 40, 10)
- print(a)
- # 将a的行复制2倍,列复制3倍
- b = np.tile(a, (2, 3))
- print(b)
35、8*8棋盘矩阵,其中1、3、5、7行和0、2、4、6列的元素置为1;1 ,3,5,7列和0,2,4,6行也是1
- z = np.zeros((8,8), dtype = int)
- z[1::2,::2] = 1 # 注意:双冒号的用法
- z[::2,1::2] = 1
- print(z)
36、多赋值方法
- z = np.random.random((10,10))
- zmin, zmax = z.min(), z.max()
37、归一化,将矩阵规格化到0~1,即最小的变成0,最大的变成1,最小与最大之间的等比缩放
- z = 10*np.random.random((5,5))
- zmin, zmax = z.min(), z.max()
- z = (z-zmin)/(zmax-zmin) #归一化公式
- print(z)
38、矩阵相加
- z = np.zeros((5,5))
- z += np.arange(5)
- print(z)
39、生成0~10之间均匀分布的11个数,包括0和10
- z = np.linspace(0, 10, 11, endpoint=True, retstep=True)
- print(z)
40、交换矩阵的其中两行
- a = np.arange(25).reshape(5,5)
- a[[0,1]] = a[[1,0]]
- print(a)
41、找出数组中与给定值最接近的数
- z = np.array([[0,1,2,3],[4,5,6,7]])
- a = 5.1
- print(np.abs(z-a).argmin())
42、判断二维矩阵中有没有一整列数为0?
- z = np.random.randint(0,3,(2,10))
- print(z.any(axis = 0))
43、生成二维的高斯矩阵
- x,y = np.meshgrid(np.linspace(-1,1,10),np.linspace(-1,1,10))
- D = np.sqrt(x**2 + y**2)
- sigma, mu = 1, 0
- a = np.exp(-(D-mu)**2 / (2*sigma**2))
- print(a)
Python的Numpy库简述的更多相关文章
- Python的numpy库下的几个小函数的用法
numpy库是Python进行数据分析和矩阵运算的一个非常重要的库,可以说numpy让Python有了matlab的味道 本文主要介绍几个numpy库下的小函数. 1.mat函数 mat函数可以将目标 ...
- Python数据分析numpy库
1.简介 Numpy库是进行数据分析的基础库,panda库就是基于Numpy库的,在计算多维数组与大型数组方面使用最广,还提供多个函数操作起来效率也高 2.Numpy库的安装 linux(Ubuntu ...
- Python 的 Numpy 库
Numpy: # NumPy库介绍 # NumPy的安装 # NumPy系统是Python的一种开源的数值计算扩展 # 可用来存储和处理大型矩阵. # 因为不是Python的内嵌模块,因此 ...
- Python之Numpy库常用函数大全(含注释)
前言:最近学习Python,才发现原来python里的各种库才是大头! 于是乎找了学习资料对Numpy库常用的函数进行总结,并带了注释.在这里分享给大家,对于库的学习,还是用到时候再查,没必要死记硬背 ...
- Python之Numpy库常用函数大全(含注释)(转)
为收藏学习,特转载:https://blog.csdn.net/u011995719/article/details/71080987 前言:最近学习Python,才发现原来python里的各种库才是 ...
- 【python】numpy库和matplotlib库学习笔记
Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...
- Python之numpy库
NumPy库知识结构 更多详细内容参考:http://www.cnblogs.com/zhanglin-0/p/8504635.html
- Python基础——numpy库的使用
1.numpy库简介: NumPy提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密的运算库.专为进行严格的数字处理而产生. 2.numpy库使用: 注:由于深度学习中存在大量的 ...
- python中numpy库的一些使用
想不用第三方库实现点深度学习的基础部分,发现numpy真的好难(笑),在此做点遇到的函数的笔记 惯例官方文档:https://docs.scipy.org/doc/numpy-1.16.1/refer ...
随机推荐
- 导航+左侧菜单+tab切换模板
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...
- Runstats,Reorgchk,Reorg,Rebind
Runstats:收集统计信息,为DB2优化器提供最佳路径选择.runstats命令只能针对单表执行.命令格式:db2 runstats on table schema.tabnamerunstats ...
- python面向对象-三大特性
python面向对象编程三大特性 小结:前面我们说完了类和对象的关系,相信对类和对象的理解更加透彻..让我们一起去研究面向对象的三大特性吧.... 继承 1.什么继承? 在程序中继承就是事物之间的所属 ...
- Spring 嵌套方法AOP不生效问题
问题描述, 如下Abc定义为一个Bean, b()方法添加@TargetDatasource,定义切面DynamicDataSourceAspect,期望:调用a()方法,b()方法上的AOP拦截能生 ...
- phoenix技术(安装部署和基本使用)讲解
1.phoenix简介 Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问.Apache Phoenix会将用户编写 ...
- 设置shell脚本静默方式输入密码方法
stty命令是一个终端处理工具.我们可以通过它来实现静默方式输入密码,脚本如下 #!/bin/sh echo –e “enter password:” stty –echo ...
- Jenkins 忘记admin用户名以及密码
1.进入 如果安装的war包,路劲如下: C:\Users\LENOVO\.jenkins\ 2. 1)方式一: 打开config.xml ->将useSecurity设置为false 2)方 ...
- npm的源改成淘宝镜像
修改源地址为淘宝 NPM 镜像npm config set registry http://registry.npm.taobao.org/ 修改源地址为官方源npm config set regis ...
- Dubbo服务化框架使用整理
一.垂直应用架构拆分 在应用架构的演进过程中,垂直应用架构因为开发便捷,学习成本低,对于实现业务功能的增删改查提供了高效的开发支持,有利于前期业务高速发展的的快速实现.但是随着系统业务功能的不断扩展和 ...
- 关于Sentry(转)
原文:http://blog.csdn.net/largetalk/article/details/8640854 1. Sentry介绍及使用 Sentry is a realtime event ...