Numpy

numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算。这个库的前身是1995年就开始开发的一个用于数组运算的库。经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架。

numpy在Linux下的安装已经在5.1.2中作为例子讲过,Windows下也可以通过pip,或者到下面网址下载:

Obtaining NumPy & SciPy libraries

5.3.1 基本类型(array)

array,也就是数组,是numpy中最基础的数据结构,最关键的属性是维度和元素类型,在numpy中,可以非常方便地创建各种不同类型的多维数组,并且执行一些基本基本操作,来看例子:

import numpy as np

a = [1, 2, 3, 4]        #
b = np.array(a) # array([1, 2, 3, 4])
type(b) # <type 'numpy.ndarray'> b.shape # (4,)
b.argmax() #
b.max() #
b.mean() # 2.5 c = [[1, 2], [3, 4]] # 二维列表
d = np.array(c) # 二维numpy数组
d.shape # (2, 2)
d.size #
d.max(axis=0) # 找维度0,也就是最后一个维度上的最大值,array([3, 4])
d.max(axis=1) # 找维度1,也就是倒数第二个维度上的最大值,array([2, 4])
d.mean(axis=0) # 找维度0,也就是第一个维度上的均值,array([ 2., 3.])
d.flatten() # 展开一个numpy数组为1维数组,array([1, 2, 3, 4])
np.ravel(c) # 展开一个可以解析的结构为1维数组,array([1, 2, 3, 4]) # 3x3的浮点型2维数组,并且初始化所有元素值为1
e = np.ones((3, 3), dtype=np.float) # 创建一个一维数组,元素值是把3重复4次,array([3, 3, 3, 3])
f = np.repeat(3, 4) # 2x2x3的无符号8位整型3维数组,并且初始化所有元素值为0
g = np.zeros((2, 2, 3), dtype=np.uint8)
g.shape # (2, 2, 3)
h = g.astype(np.float) # 用另一种类型表示 l = np.arange(10) # 类似range,array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
m = np.linspace(0, 6, 5)# 等差数列,0到6之间5个取值,array([ 0., 1.5, 3., 4.5, 6.]) p = np.array(
[[1, 2, 3, 4],
[5, 6, 7, 8]]
) np.save('p.npy', p) # 保存到文件
q = np.load('p.npy') # 从文件读取

2 在Numpy中,多数函数可以指定数据类型的参数,这个参数是可选的,格式为dtype=类型名,如:

复制代码
1 a=numpy.arrange(5,dtype=int)
2
3 >>>array([0,1,2,3,4])
4
5 a=numpy.arrange(5,dtype=complex)
6
7 ?
1 import numpy as np
2
3 print(np.empty(3))
4
5 print(np.empty((4,1)))

4  数组转置(可以使用transpose()函数,也可以使用T属性访问转置矩阵)

1 nar.transpose()
2
3 nar.T
1 a=numpy.arrange(12).reshape(3,4)
2
3 a
4
5 array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
#此为第5点

5 Numpy中很多函数统计方法即可以当做数组的实例方法调用,也可以作为顶级的Numpy函数调用

实例使用:

1 r=a.cumsum()
2
3 r
4
5 array([0,1,3,6,10,15,21,28,36,45,55,66])

顶层函数调用:

1 r=numpy.cumsum(a)
2 r
3
4 array([0,1,3,6,10,15,21,28,36,45,55,66])

还有比如排序

a=numpy.random.rand(4)

a.sort()等价于numpy.sort(a)

6 Numpy中的集合运算

a=numpy.array([1,4,2,7,9,0,1,5,7,8])

unique(a):  删除数组中的重复元素,并返回唯一元素的有序结果

intersect1d(a,b):查找a,b中的共同元素,并返回公共元素的有效结果

union1d(a,b):求a,b的并集,并返回有序结果。

in1d(a,b):返回一个布尔型数组,如果a元素包含于b,则返回TRUE,否则返回False

setdiff1d(a,b):求集合a,b的差,即存在于a中但不存在于b中的元素

setxor1d(a,b):求集合a,b的对称差。即存在于a或b但不同时存在于a,b中的元素

7 线性代数

numpy中的linalg模块支持常见的线性代数操作

det :求矩阵行列式

eig:求矩阵特征值和特征向量

inv:求方阵的逆

numpy中的常用线性代数函数

dot:完成矩阵乘法

trace:计算对角线元素的和

8访问文件

(1)将数组以二进制形式存取

save用于保存:numpy.save('d:\\nshz.npy',a) 若没有指定扩展名,则默认为.npy

load用于读取:numpy.load('d:\\nshz.npy')

(2)存取文本文件

savetxt():numpy.savetxt('d:\\npshz.txt',a,delimiter=',')会在D盘下新建文件‘npshz.txt’

loadtxt():numpy.loadtxt('d:\\npshz.txt',delimiter=',')

Numpy的学习的更多相关文章

  1. Numpy基础学习与总结

    Numpy类型学习 1.数组的表示 import numpy as np In [2]: #numpy核心是高维数组,库中的ndarray支持多维数组,同时提供了数值运算,可对向量矩阵进行运算 In ...

  2. NumPy 数组学习手册·翻译完成

    原文:Learning NumPy Array 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 ...

  3. Numpy函数学习--genfromtxt函数

    genfromtxt函数 今天学习时遇到了genfromtxt函数 world_alcohol = numpy.genfromtxt("world_alcohol.txt",del ...

  4. numpy.sort()学习记录

    python的功能真的是只有我想不到,没有它做不到 在学系np.sort中学到了一些 print(array2) [14 13 12 11] [10 9 8 7] [ 6 5 4 3] print(n ...

  5. Numpy API学习

    Numpy 常用API学习(全) 一.介绍 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库 ...

  6. Python: NumPy, Pandas学习资料

    NumPy 学习资料 书籍 NumPy Cookbook_[Idris2012] NumPy Beginner's Guide,3rd_[Idris2015] Python数据分析基础教程:NumPy ...

  7. numpy pandas 学习

    一. 数组要比列表效率高很多 numpy高效的处理数据,提供数组的支持,python默认没有数组.pandas.scipy.matplotlib都依赖numpy. pandas主要用于数据挖掘,探索, ...

  8. Python 读取UCI iris数据集分析、numpy基础学习

    python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...

  9. Numpy基础学习

    Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包. 主要的功能: 1.ndarray,一个具有矢量运算和复杂广播工能的快速且节省空间的多维数组 2.用于对整组数据 ...

随机推荐

  1. es6之字符串添加的东西

    在es6里边对字符串添加了一些东西! 字符串模板(非常友善) 相信大家之前都遇到过万恶的字符串拼接,真是噩梦,不过之后有了字符串模板之后,再也不用担心字符串拼接会乱了... 之前的字符串拼接 let ...

  2. webpack 单独打包指定JS文件(CopyWebpackPlugin)

    背景: 不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改.因此,需要用webpack单独打包指定文件.npm install --save-dev ...

  3. loj#6041. 「雅礼集训 2017 Day7」事情的相似度(SAM set启发式合并 二维数点)

    题意 题目链接 Sol 只会后缀数组+暴躁莫队套set\(n \sqrt{n} \log n\)但绝对跑不过去. 正解是SAM + set启发式合并 + 二维数点/ SAM + LCT 但是我只会第一 ...

  4. weblogic patch log显示

    如何在WebLogic 12.1.3 版本的 server log 中显示 opatch 的补丁信息? 打补丁  patch 23558563 之后. 需要在 JAVA_OPTIONS 中添加如下参数 ...

  5. Linux常用查找命令

    第一种:grep命令 示例: 第二种:find命令 示例: 第三种:locate命令 示例: 第四种:whereis命令 示例: 第五种:which命令 示例:

  6. Android Studio教程02-应用程序结构图及应用基础

    目录 1. Android应用程序开发技术结构图 2.Android的应用基础 2.1. Android的四大组件: 1. Android组件1: Activity 2. Android组件2: Se ...

  7. SQLServer之多表联合查询

    多表联合查询简介 定义:连接查询是关系型数据库最主要的查询,通过连接运算符可以实现多个表连接数据查询. 分类:内连接,外连接,全外连接. 内连接 定义 内联接使用比较运算符根据每个表的通用列中的值匹配 ...

  8. Linux学习历程——Centos 7 ls命令

    一.命令介绍 ls命令用于显示目录中的信息. ----------------------------------------------------------------------------- ...

  9. JAVA EE获取浏览器和操作系统信息

    一.原理说明:  1. 浏览器访问服务端时,Http请求头上会带上客户端一些信息,可通过"user-agent"获取. //java获取方法如下,其他语言也有自己获取方法 Stri ...

  10. 【心得】Lattice和Xilinx工具关键特性对比(Diamond、ISE)

    [博客导航] [导航]FPGA相关 背景 由于项目需要,初次接触Diamond,发现跟之前的ISE有很多不同,记录下一些体会,供参考.按开发流程,将一些常用的特性进行对比,列举如下: IP Core管 ...