Python 的 Numpy 库
Numpy:
# NumPy库介绍 # NumPy的安装 # NumPy系统是Python的一种开源的数值计算扩展
# 可用来存储和处理大型矩阵。
# 因为不是Python的内嵌模块,因此使用前需要安装。
# 可以利用Python自带的pip工具自动安装。
# 或者选择访问下面的网站,下载与Python版本匹配的exe安装文件手动安装。
# http://sourceforge.net/projects/numpy/files/NumPy/
# 安装完成后,打开Python3.4,运行命令import numpy,若不出现错误则说明安装成功。 # NumPy的组成与功能
# Numpy (Numeric Python)可以被理解为一个用python实现的科学计算包,包括:
# 强大的N维数组对象Array;
# 成熟的函数库;
# 实用的线性代数、傅里叶变换和随机数生成函数。
# 提供了许多高级的数值编程工具,如:矩阵数据类、矢量处理,以及精密的运算库。 # 基础知识
# NumPy的主要对象是同种元素的多维数组。
# 维度(dimensions)叫做轴(axes)。
# 轴的个数叫做秩(rank)。
# 例如,在3D空间一个点的坐标 [1, 2, 3] 是一个秩为1的数组,因为它只有一个轴。轴长度为3.
# 例如,在[[ 1., 0., 0.],[0.,1.,2.]]这个例子中,数组的秩为2。第一个维度长度为2,第二个维度长度为3.
# NumPy的数组类被称作ndarray,通常被称作数组。
# 注意numpy.array和标准Python库类array并不相同,后者只处理一维数组和提供少量功能。
# ndarray对象属性主要见下表: 例如其中.shape表示数组的维度, .size表示数组元素的总个数。
#
#---属性---------解释--------------
#ndarray.shape:数组的维度,这是一个指示数组在每个维度上大小的整数元组。
#ndarray.size:数组元素的总个数,等于shape属性中元组元素的乘积。
#ndarray.dtype:一个用来描述数组中元素类型的对象,可以通过使用标准Python类型创造dtype。
#ndarray.itemsize:数组中每个元素字节的大小。
#ndarry.data:包含实际数组元素的缓冲区,通常我们通过索引引用数组元素,不使用这个属性。
#
from numpy import *
#例子: from numpy import *
a=arange(15).reshape(3,5)
print(a)
# [[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]]
print(a.shape) #(3, 5)
print(a.ndim) #
print(a.dtype.name) #'int32'
print(a.itemsize) #
print(a.size) #
print(type(a)) #<class 'numpy.ndarray'>
b=array([6,7,8])
print(b) #[6 7 8]
print(type(b)) #<class 'numpy.ndarray'> # 创建数组(方法一)
# 创建数组的方法有多种,比如可以使用array函数利用常规的Python列表和元组创造数组。所创建的数组类型由原序列中的元素类型决定。示例如下:
from numpy import *
a=array([2,3,4])
print(a) #[2 3 4]
print(a.dtype) #int32
b=array([1.2,3.5,5.1])
print(b.dtype) #float64 #一个常见的错误包括用多个数值参数调用‘array’而不是提供一个由数值组成的列表作为一个参数。
# a=array(1,2,3,4) #wrong
# Traceback (most recent call last):
# File "I:/GithubCodes/PracticeOfPython/PracticeOfPython/201803/180317-Numpy.py", line 69, in <module>
# a=array(1,2,3,4) #wrong
# ValueError: only 2 non-keyword arguments accepted
a=array([1,2,3,4]) #Right
c=array([[1,2],[3,4]],dtype=complex)
print(c)
# [[ 1.+0.j 2.+0.j]
# [ 3.+0.j 4.+0.j]] # 创建数组(方法二)
# NumPy提供了一些使用占位符创建数组的函数。
# 例如: 函数zeros创建一个全是0的数组,函数ones创建一个全1的数组,函数empty创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(dtype)都是float64 。示例如下:
print(zeros((3,4)))
# [[ 1.+0.j 2.+0.j]
# [ 3.+0.j 4.+0.j]]
# [[ 0. 0. 0. 0.]
# [ 0. 0. 0. 0.]
# [ 0. 0. 0. 0.]] print(ones((2,3,4),dtype=int16)) #dtype can also be specified指定
# [[[1 1 1 1]
# [1 1 1 1]
# [1 1 1 1]]
#
# [[1 1 1 1]
# [1 1 1 1]
# [1 1 1 1]]] print(empty((2,3)))
# [[ 1.39069238e-309 1.39069238e-309 1.39069238e-309]
# [ 1.39069238e-309 1.39069238e-309 1.39069238e-309]] # 创建数组(方法三)
# 此外NumPy提供一个arange的函数返回数组,示例如下:
print(arange(10,30,5))
# [10 15 20 25]
print(arange(0,2,0.3)) # it accepts float arguments
# [ 0. 0.3 0.6 0.9 1.2 1.5 1.8] # 打印数组
# 打印数组时,NumPy以类似嵌套列表的形式显示。
# 示例如下:其中一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表。
a=arange(6) #1-d array
print(a)
# [0 1 2 3 4 5] b=arange(12).reshape(4,3) #2-d array
print(b)
# [[ 0 1 2]
# [ 3 4 5]
# [ 6 7 8]
# [ 9 10 11]] c=arange(24).reshape(2,3,4) #3-d array
print(c)
# [[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
#
# [[12 13 14 15]
# [16 17 18 19]
# [20 21 22 23]]] # 基本运算
# 数组的算术运算是按元素进行。新的数组被创建并且被结果来填充。
# NumPy中的乘法运算符*指示按元素计算
# 矩阵乘法可以使用dot函数或创建矩阵对象实现。示例如下:
a=array([20,30,40,50])
b=arange(4)
print(b) #b为:[0 1 2 3]
c=a-b
print(c) #c为:[20 29 38 47]
d=b**2
print(d) #d 为: [0 1 4 9]
e=10*sin(a)
print(e) #e为:[ 9.12945251 -9.88031624 7.4511316 -2.62374854]
f=a<35
print(f) #f 为: [ True True False False] # 非数组的运算可以利用ndarrary类方法实现。
# 通用函数(ufunc) -- NumPy提供常见的数学函数。如sin cos和exp 如sin, cos和exp。
# 在NumPy里这些函数作用按数组的元素运算,产生一个数组作为输出。示例如下:
a=random.random((2,3))
print(a)
# [[ 0.176555 0.98220276 0.09996688]
# [ 0.02275491 0.139681 0.22131763]]
print(a.sum()) #1.64247817609
print(a.min()) #0.0227549118614
print(a.max()) #0.982202755153 b=arange(12).reshape(3,4)
print(b)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(b.sum(axis=0)) #sum of each column
# [12 15 18 21]
print(b.min(axis=1)) #min of each row
# [0 4 8]
print(b.cumsum(axis=1)) #cumulative累加 sum along each row
# [[ 0 1 3 6]
# [ 4 9 15 22]
# [ 8 17 27 38]] # 索引、切片与迭代
# 数组还可以被索引、切片和迭代,示例如下:
a=arange(10)**3
print(a) #[ 0 1 8 27 64 125 216 343 512 729]
print(a[2]) #
print(a[2:5]) #[ 8 27 64]
b=a[:6:2]=-1000 #equivalent to a[0:6:2]=-1000; from start to position 6,exclusive, set every 2nd element to -1000
print(b) #-1000? 答案应该是:[-1000,1,-1000,27,-1000,125,216,343,512,729
print(a[::-1]) #reversed a
# [ 729 512 343 216 125 -1000 27 -1000 1 -1000] for i in a :
print(i**(1/3.),)
# nan
# 1.0
# nan
# 3.0
# nan
# 5.0
# 6.0
# 7.0
# 8.0
# 9.0 # 矩阵运算
# NumPy对于多维数组的运算,缺省情况下并不使用矩阵运算,对数组进行矩阵运算,可调用相应的函数。
# numpy库也提供了matrix类,使用matrix类创建的是矩阵对象,它们的加减乘除运算缺省采用矩阵方式计算,用法和matlab十分类似。示例如下:
a=matrix([[1,2,3],[5,5,6],[7,9,9]])
print(a*a**-1)
# [[ 1.00000000e+00 0.00000000e+00 0.00000000e+00]
# [ 4.44089210e-16 1.00000000e+00 4.44089210e-16]
# [ 0.00000000e+00 -4.44089210e-16 1.00000000e+00]] # 矩阵中更高级的一些运算可以在NumPy的线性代数子库linalg中找到。
# 例如inv函数计算逆矩阵,solve函数可以求解多元一次方程组程组。
函数和方法的总览
NumPy库提供作用丰富的函数和方法,下面是一个分类排列汇目录总揽,可通过手册即用即学。
---创建数组的函数:
arang,array,cpoy,... ---转化的函数:
astype,atleast 1d ---操作的函数:
array split ---询问的函数:
all,any,nonzero,where
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库常用函数大全(含注释)
前言:最近学习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 ...
- python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等
numpy库提供非常便捷的数组运算,方便数据的处理. 1.数组与标量之间可直接进行运算 In [45]: aOut[45]:array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ ...
随机推荐
- [Android] osx下如何使用SublimeText阅读Android系统源码
reference to : http://www.jianshu.com/p/c295d2729ecf 平时使用Sublimetext都是打开单个文件,这次要导入几万个文件,这在一些ide中称为pr ...
- 【Multiple backgrounds】用CSS3实现网页多重背景
对于背景属性background-image大家应该已经很熟悉了,在CSS2中与它相关的属性还有background-repeat(设置背景是否重复及重复的方式).background-positio ...
- c#逐行分元素读取记事本txt数据写进数据库
其实这里最关键的一个方法是 StreamReader类里的 ReadLine();这个方法可以逐行读取txt流里面的数据.写了个简单的demo,已经加上了详细的注释说明. ok,好了,不废话,下面 ...
- svn 错误集锦续
4,svn出错:Error: File or directory '.' is out of date; try updating 出错原因:SVN服务器端的版本比你的版本要新,不允许提交. 解决方案 ...
- 锐浪报表 导出 PDF ANSI码 乱码 问题解决
锐浪 报表 导出PDF时如果 ANSI 码 打勾了会乱码,能将这个选项默认不打勾吗 //在报表导出事件脚本里写脚本,可实现导出控制Sender.AsE2PDFOption.AnsiTextMode=0 ...
- N年的经验在别人眼里是怎么看的?
很多人简历上都喜欢总结这么一句话:N年XXX领域的经验.N值越大,似乎越NB. 可是,我怎么看到很多人做了几十年的饭,水平变化不大,和专业厨师还是差得远. 还有写一辈子字的,开一辈子车的,这些人也和专 ...
- android 动画具体解释(二)
以下就開始学习属性动画的基本使用方法,我们来看属性动画的继承关系,例如以下如所看到的: 显然关注的焦点应该是ValueAnimator,ObjectAnimator这两个类啦,ObjectAnimat ...
- STM8S AD转换
//不说那么多了,直接上程序 void ADC1_DeInit(void) { ADC1->CSR = ADC1_CSR_RESET_VALUE; ADC1->CR1 = ADC1_CR1 ...
- springboot项目启动报错
启动springboot项目报错: NoSuchMethodError: org.apache.tomcat.util.scan.StandardJarScanner.setJarScanFilter ...
- windows系统上安装Redis,并且设置Redis密码
一.Windows版本的Redis下载 下载地址:https://github.com/MSOpenTech/redis/releases 我下载的是最新版的3.2 二.安装Redis 我下载的是安装 ...