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], [ ...
随机推荐
- struts 2中为什么抽象包不能包含action?
struts 2中为什么抽象包不能包含action?麻烦写详细点!
- c#逐行分元素读取记事本txt数据写进数据库
其实这里最关键的一个方法是 StreamReader类里的 ReadLine();这个方法可以逐行读取txt流里面的数据.写了个简单的demo,已经加上了详细的注释说明. ok,好了,不废话,下面 ...
- Linux 学习 step by step (1)
做为一个技术小菜的android的程序员,做应用层的app觉得没有什么意思,于是像多学点android底层的知识.最近在看<Android 技术内幕(系统卷)> . 我打开书的第一张,便花 ...
- Immediately-Invoked Puzzler
The Poplar Puzzle-makers weren’t too impressed. They barely noticed your simple and beautiful array ...
- 运维-JVM监控之内存泄漏
转载:https://blog.csdn.net/zdx_csdn/article/details/71214219 jmap -heap pid查看进程堆内存使用情况,包括使用的GC算法.堆配置参数 ...
- 【nodejs】使用response输出中文但页面中文乱码的处置
两点要确认: 1.head里有<meta charset="utf-8"/> 2.js文件编码为utf-8格式. 第二点往往容易被忽略,所以出现乱码. 附上代码: 'u ...
- DataGrid前台数据绑定技巧
(1)DataGrid控件不换行,数据显示不完全后面加"..." <%# DataBinder.Eval(Container.DataItem,? DataBinder.Ev ...
- PHP高级教程-文件
PHP 文件处理 fopen() 函数用于在 PHP 中打开文件. 打开文件 fopen() 函数用于在 PHP 中打开文件. 此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来 ...
- “最大子序列和”算法 java
maxSubSum各自是最大子序列和的4中java算法实现. 第一种算法执行时间为O(N^3),另外一种算法执行时间为O(N^2),第三种算法执行时间为O(nlogn),第四种算法执行时间为线性N p ...
- POJ 1436 Horizontally Visible Segments (线段树·区间染色)
题意 在坐标系中有n条平行于y轴的线段 当一条线段与还有一条线段之间能够连一条平行与x轴的线不与其他线段相交 就视为它们是可见的 问有多少组三条线段两两相互可见 先把全部线段存下来 并按x ...