numpy 是 python 的科学计算库
import numpy as np

1、使用numpy读取txt文件

  1. # dtype = "str":指定数据格式
  2. # delimiter = "\t":指定分割符
  3. # skip_header = 1:跳过第一行
  4. npinfo = np.genfromtxt("titanic_train.txt", delimiter = "\t", dtype = "U75", skip_header = 1)

2、ayyay数组,数据类型是必须相同。

  1. vector = np.array([5, 10, 15, 20])
  2. matrix = np.array([[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]])
  3. print(vector)
  4. print(matrix)

3、numpy的数据类型,一般用到四种数据类型 bool、 int32/64、 float32/64、 string

  1. print(vector.dtype)
  2. print(matrix.dtype)

4、获取第1行的第4个数

  1. npinfo[0, 3]
  2. # 取1-3行和1-3列数据
  3. npinfo[0: 3, 0: 3]
  4. # 如果:省略前后数字表示所有数据
  5. npinfo[:, :]

5、判断array中元素的值

  1. vector == 10
  2. matrix[:, 0] == 25

6、取出等于10的元素

  1. token = (vector == 10)
  2. vector[token]

7、取出有25的这一行

  1. token_25 = (matrix[:, 0] == 25)
  2. matrix[token_25]

8、string 转 float 类型

  1. vector = np.array(["", "", "", ""])
  2. vector = vector.astype(float)
  3. print(vector)

9、基本运算

  1. vector.sum() # 求和
  2. vector.mean() # 均值
  3. matrix.sum(axis = 0) # 按列求和
  4. matrix.sum(axis = 1) # 按行求和

10、缺失值填补

  1. nan_4 = np.isnan(npinfo[:, 4])
  2. npinfo[nan_4, 4] = 0 # 缺失值填补,对有缺失值的第4列填补0

11、使用 numpy 创建数组和矩阵

  1. # 创建一个3行5列的矩阵
  2. a = np.arange(15).reshape(3, 5)
  3. print(a)

12、查看当前数组是几维的

  1. a.ndim

13、其它查看

  1. a.dtype
  2. a.size

14、创建一个空矩阵

  1. np.zeros((3, 4))

15、创建一个1矩阵 3维

  1. np.ones((3, 4, 5), dtype = np.int32)

16、创建有步长的矩阵:np.arange( 起始,结束,步长 )

  1. np.arange( 10, 15, 1 )

17、随机初始化矩阵

  1. np.random.random((3, 4))

18、创建一个指定数量的矩阵

  1. # np.linspace( 起始,结束,数量 )
  2. from numpy import pi
  3. np.linspace( 0, 2*pi, 100 )

19、求正弦

  1. np.sin(np.linspace( 0, 2*pi, 100 ))

20、数组计算

  1. a = np.array([10, 15, 20, 25])
  2. b = np.arange(4)
  3.  
  4. a - b
  5. b ** 2 #注意:这个是n次方,不是乘法。
  6. a < 20

21、# 求内积 外积

  1. A = np.array( [[1, 2],
  2. [0, 3]] )
  3. B = np.array( [[2, 0],
  4. [3, 4]] )
  5.  
  6. # 内积 对应位置相乘
  7. A * B
  8.  
  9. # 矩阵相乘
  10. A.dot(B)
  11. np.dot(A, B)
  1. # 矩阵相乘 原理
  2. #A=
  3. #a b c
  4. #d e f
  5. #g h i
  6.  
  7. #B=
  8. #A D
  9. #B E
  10. #C F
  11.  
  12. #A.dot(B)=
  13. #aA+bB+cC aD+bE+cF
  14. #dA+eB+fC dD+eE+fF
  15. #gA+hB+iC gD+hE+iF

22、e的x次幂

  1. A = np.arange(3)
  2. np.exp(A)

23、开根号

  1. np.sqrt(A)

24、向下取整

  1. C = np.floor(10*np.random.random((3, 4)))

25、转化为行向量

  1. C.ravel()

26、重新shape,如:由3行4列转为2行6列

  1. C.shape = (2, 6)

27、行列转置

  1. C.T

28、其它reshape方法

  1. C.resize((2, 6))
  2. C.reshape(3, -1)

29、矩阵拼接

  1. x = np.floor(10*np.random.random((3, 4)))
  2. y = np.floor(10*np.random.random((3, 4)))
  3.  
  4. # 按行拼接
  5. np.vstack((x, y))
  6. # 按列拼接
  7. np.hstack((x, y))

30、矩阵切分

  1. x = np.floor(10*np.random.random((3, 12)))
  2. # 按列切成3份
  3. np.hsplit(x, 3)
  4. # 如果想切两刀怎么办?
  5. np.hsplit(x, (3, 5))
  6.  
  7. y = np.floor(10*np.random.random((12, 2)))
  8. # 按行切分
  9. np.vsplit(y, 3)

31、矩阵相互赋值问题

  1. z = np.arange(12)
  2.  
  3. t = z # 共享内存
  4. t is z # 结果是True
  5. # print(id(t)) 和 print(id(z)) 的结果是一样的。
  6.  
  7. t1 = z.view() #共享数据,但不共享内存
  8. t1 is z # 结果是False
  9. # print(id(t)) 和 print(id(z)) 的结果是不同的。
  10.  
  11. t2 = z.copy() #完全是两个对象

32、排序和索引

  1. data = np.sin(np.arange(20).reshape(5, 4))
  2. # 找最大值
  3. ind = data.argmax(axis = 0) # 最大值的索引
  4. data_max = data[ind, np.arange(data.shape[1])]
  5. print(data_max)
  6.  
  7. 不过有最函数:data.max(axis = 0)

33、# 排序

  1. sx = np.floor(10*np.random.random((3, 4)))
  2. print(np.sort(sx, axis = 0)) # 按列排序
  3. print(np.sort(sx, axis = 1)) # 按行排序
  4. 也可以这么写:sx.sort(axis = 1)

34、复制 tile

  1. a = np.arange(0, 40, 10)
  2. print(a)
  3. # 将a的行复制2倍,列复制3倍
  4. b = np.tile(a, (2, 3))
  5. print(b)

35、8*8棋盘矩阵,其中1、3、5、7行和0、2、4、6列的元素置为1;1 ,3,5,7列和0,2,4,6行也是1

  1. z = np.zeros((8,8), dtype = int)
  2. z[1::2,::2] = 1 # 注意:双冒号的用法
  3. z[::2,1::2] = 1
  4. print(z)

36、多赋值方法

  1. z = np.random.random((10,10))
  2. zmin, zmax = z.min(), z.max()

37、归一化,将矩阵规格化到0~1,即最小的变成0,最大的变成1,最小与最大之间的等比缩放

  1. z = 10*np.random.random((5,5))
  2. zmin, zmax = z.min(), z.max()
  3. z = (z-zmin)/(zmax-zmin) #归一化公式
  4. print(z)

38、矩阵相加

  1. z = np.zeros((5,5))
  2. z += np.arange(5)
  3. print(z)

39、生成0~10之间均匀分布的11个数,包括0和10

  1. z = np.linspace(0, 10, 11, endpoint=True, retstep=True)
  2. print(z)

40、交换矩阵的其中两行

  1. a = np.arange(25).reshape(5,5)
  2. a[[0,1]] = a[[1,0]]
  3. print(a)

41、找出数组中与给定值最接近的数

  1. z = np.array([[0,1,2,3],[4,5,6,7]])
  2. a = 5.1
  3. print(np.abs(z-a).argmin())

42、判断二维矩阵中有没有一整列数为0?

  1. z = np.random.randint(0,3,(2,10))
  2. print(z.any(axis = 0))

43、生成二维的高斯矩阵

  1. x,y = np.meshgrid(np.linspace(-1,1,10),np.linspace(-1,1,10))
  2. D = np.sqrt(x**2 + y**2)
  3. sigma, mu = 1, 0
  4. a = np.exp(-(D-mu)**2 / (2*sigma**2))
  5. print(a)

Python的Numpy库简述的更多相关文章

  1. Python的numpy库下的几个小函数的用法

    numpy库是Python进行数据分析和矩阵运算的一个非常重要的库,可以说numpy让Python有了matlab的味道 本文主要介绍几个numpy库下的小函数. 1.mat函数 mat函数可以将目标 ...

  2. Python数据分析numpy库

    1.简介 Numpy库是进行数据分析的基础库,panda库就是基于Numpy库的,在计算多维数组与大型数组方面使用最广,还提供多个函数操作起来效率也高 2.Numpy库的安装 linux(Ubuntu ...

  3. Python 的 Numpy 库

    Numpy: # NumPy库介绍 # NumPy的安装 #  NumPy系统是Python的一种开源的数值计算扩展 #  可用来存储和处理大型矩阵. #  因为不是Python的内嵌模块,因此 ...

  4. Python之Numpy库常用函数大全(含注释)

    前言:最近学习Python,才发现原来python里的各种库才是大头! 于是乎找了学习资料对Numpy库常用的函数进行总结,并带了注释.在这里分享给大家,对于库的学习,还是用到时候再查,没必要死记硬背 ...

  5. Python之Numpy库常用函数大全(含注释)(转)

    为收藏学习,特转载:https://blog.csdn.net/u011995719/article/details/71080987 前言:最近学习Python,才发现原来python里的各种库才是 ...

  6. 【python】numpy库和matplotlib库学习笔记

    Numpy库 numpy:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成,并可与C++/Fortran语言无缝结合.树莓派Python v3默 ...

  7. Python之numpy库

    NumPy库知识结构 更多详细内容参考:http://www.cnblogs.com/zhanglin-0/p/8504635.html

  8. Python基础——numpy库的使用

    1.numpy库简介:    NumPy提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密的运算库.专为进行严格的数字处理而产生. 2.numpy库使用: 注:由于深度学习中存在大量的 ...

  9. python中numpy库的一些使用

    想不用第三方库实现点深度学习的基础部分,发现numpy真的好难(笑),在此做点遇到的函数的笔记 惯例官方文档:https://docs.scipy.org/doc/numpy-1.16.1/refer ...

随机推荐

  1. 导航+左侧菜单+tab切换模板

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...

  2. Runstats,Reorgchk,Reorg,Rebind

    Runstats:收集统计信息,为DB2优化器提供最佳路径选择.runstats命令只能针对单表执行.命令格式:db2 runstats on table schema.tabnamerunstats ...

  3. python面向对象-三大特性

    python面向对象编程三大特性 小结:前面我们说完了类和对象的关系,相信对类和对象的理解更加透彻..让我们一起去研究面向对象的三大特性吧.... 继承 1.什么继承? 在程序中继承就是事物之间的所属 ...

  4. Spring 嵌套方法AOP不生效问题

    问题描述, 如下Abc定义为一个Bean, b()方法添加@TargetDatasource,定义切面DynamicDataSourceAspect,期望:调用a()方法,b()方法上的AOP拦截能生 ...

  5. phoenix技术(安装部署和基本使用)讲解

    1.phoenix简介 Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问.Apache Phoenix会将用户编写 ...

  6. 设置shell脚本静默方式输入密码方法

    stty命令是一个终端处理工具.我们可以通过它来实现静默方式输入密码,脚本如下 #!/bin/sh echo –e “enter password:” stty –echo               ...

  7. Jenkins 忘记admin用户名以及密码

    1.进入 如果安装的war包,路劲如下: C:\Users\LENOVO\.jenkins\ 2. 1)方式一: 打开config.xml  ->将useSecurity设置为false 2)方 ...

  8. npm的源改成淘宝镜像

    修改源地址为淘宝 NPM 镜像npm config set registry http://registry.npm.taobao.org/ 修改源地址为官方源npm config set regis ...

  9. Dubbo服务化框架使用整理

    一.垂直应用架构拆分 在应用架构的演进过程中,垂直应用架构因为开发便捷,学习成本低,对于实现业务功能的增删改查提供了高效的开发支持,有利于前期业务高速发展的的快速实现.但是随着系统业务功能的不断扩展和 ...

  10. 关于Sentry(转)

    原文:http://blog.csdn.net/largetalk/article/details/8640854 1. Sentry介绍及使用 Sentry is a realtime event ...