python numpy包
在numpy包中我们可以用数组来表示向量,矩阵和高阶数据结构
首先导入numpy包:
from numpy import*
初始化numpy数组有多种方式,比如说
1.python列表或元祖
2.使用arrange,linspace函数
3.从文件中读取数据
例:列表生成numpy数组:
v=array([1,2,3,4])
M=array([[1,2],[3,4]])
v和M对象都是numpy模块提供的ndarray类型
v,M区别在于他们的维度不同
可以通过ndarray.shape获得他们的维度
ndarray.size获得他们的元素数量
v.T将1*n的数组转化成n*1的数组
例如:M.shape M.size
也可以用shape(M)和size(M)
那么为什么不使用list呢?
可以显示的定义元素类型通过在创建数组时使用dtype关键字
使用数组生成函数
x=arange(0,10,1) 0到10间距1
linspace(0,10,25) 0到10一共25个数据
x,y=mgrid[0:5,0:5]

生成随机数组:
from numpy import random
random.rand(5,5)生成5*5矩阵,随机值在0到1之间
random.randn(5,5)随机值

zeros((3,3)) 3*3的0矩阵
ones((3,3)) 3*3都是1的矩阵
文件I/O创建数组:
csv是一种常用的数据格式化文件类型,使用numpy.genfromtxt函数读取
使用numpy.savetxt可以将数组存储到csv文件中
M=random.rand(3,3)
savetxt("random-maxtrix.csv",M)
nnmpy原生文件类型:
用numpy.save和numpy.load保存和读取
save("Numpy.npy",M)
load("Numpy.npy")
操作数组:
使用方括号:
M[1]
M[1,1]
如果是n维数组,检索时省略一个索引值会返回一整行
M[1]
使用:能达到同样效果。
M[1,:]一行 M[:,1]一列
同样可以使用索引值进行赋值
A[1:3]会返回第1,2号元素---------索引这块其实和list差不多。
负值索引从数组尾部开始计算。M[-1]为数组倒数第一个
索引切片在二维数组里也是一样的。
numpy函数
where函数能将索引掩码转换成索引位置
diag函数提取出数组对角线
take函数与高级索引用法相似

choose选取多个数组的部分组成新的数组
我们对矩阵间进行加减乘除时,默认行为是逐项乘的
使用dot函数进行矩阵与矩阵,向量的乘法
将数组对象映射到matrix类型
M=matrix(A)
数组,矩阵的变换
.T=transpose
C=matrix([1j,2j],[3j,4j])
共轭:
conjugate(C)
real与img能分别得到复数的实部和虚部
real(C)
image(C)
angle与abs可以分别得到幅角与绝对值
共轭转置C.H
矩阵计算
求逆:inv(C)=C.I
行列式:linalg.det(C)
数据处理:
mean(data[:,3])求第四列平均值
标准差与方差:
std(data[:,3]),var(data[:,3])
最大值与最小值
data[:,3].min() data[:,3].max()
总和,总乘积与总对角线和:
d=arange(0,10)
sum(d)
prod(d)总乘积
cumsum(d)对每一项进行阶乘
trace(A) #same as:diag(A).sum()
对高维数组进行操作
m=rand(3,3)
m.max()
m.min()
m.max(axis=0) #max in each colomn
m.max(axis=1) #max in each row
改变形状及大小
A=array(...)
n,m=A.shape() #n,m为A的行列数
B=A.reshape(1,n*m)
B[0,0:5]=5 #B的第一行0到5全赋值为5
flatten函数创造高阶数组的向量版本,但是会对数据进行一份拷贝
B=A.flatten();
增加一个新维度
v=array([1,2,3])
v[:,newaxis] #将v变成3*1的矩阵
v[newaxis,:] #将v变成1*3的矩阵
叠加与重复数组
title与repeat
A=array([1,2],[3,4])



浅拷贝与深拷贝
为了获得高性能,python中赋值往往不拷贝底层对象,成为浅拷贝
如将A赋值给B,改变B的同时A也会被改变。
使用copy函数进行深拷贝
B=copy(A)
遍历数组元素
可以使用for遍历数组元素
for element in v:
print element
M=array([[1,2],[3,4]])
for row in M:
print("row",row)
for element in row:
print element
可以使用enumerate函数同时获取元素与对应序号

矢量化函数
标量函数不能处理矢量array 所以需要使用vectorize函数将标量函数变为矢量函数
python numpy包的更多相关文章
- Python Numpy包安装
1,下载python 下载地址: https://www.python.org/downloads/windows/ 2,配置python环境变量 在电脑的系统属性的系统变量path中添加python ...
- python之numpy包知识要点总结
一.简介 numpy主要是用来存储和处理大型矩阵,提供了一种存储单一数据类型的多维数组对象------ndarray.还提供了多种运算函数,能够完成数据计算和统计分析,是数据分析的重要工具包. 二.数 ...
- python机器学习包 Windows下 pip安装 scikit-learn numpy scipy
1.到PIP的目录中C:\Python34\Scripts;2. 2.1 pip安装numpy pip install numpy 2.2 pip安装sklearn pip install -U ...
- 机器学习常用Python扩展包
在Ubuntu下安装Python模块通常有3种方法:1)使用apt-get:2)使用pip命令(推荐);3)easy_instal 可安装方法参考:[转]linux和windows下安装python集 ...
- 简易安装python统计包
PythonCharm简易安装python统计包及 本文介绍使用pythonCharm IDE 来安装Python统计包或一些packages的简单过程,基本无任何技术难度,顺便提一提笔者在安装过程中 ...
- Python的包管理
0.Python的包管理 在刚开始学习Python的时候比较头疼各种包的管理,后来搜到一些Python的包管理工具,比如setuptools, easy_install, pip, distribut ...
- Python机器学习包
常用Python机器学习包 Numpy:用于科学计算的包 Pandas:提供高性能,易于使用的数据结构和数据分析工具 Scipy:用于数学,科学工程的软件 StatsModels:用于探索数据.估计统 ...
- win7的python3.5安装numpy包
1.你需要先确保已经安装了pip(因为我是我们需要用pip安装numpy包),我在cmd里面输入pip能显示pip的有关信息,所以我已经安装了pip了(其实是python3.x自带了pip) 如果没有 ...
- python第三方包的windows安装文件exe格式
今天弄了一上午的python-ldap,发现要么安装vc,要么用其他比较麻烦的方法,都比较麻烦.幸好找到这个地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/ ...
随机推荐
- solr连接数据库配置
一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用. 一.链接数据库 1. SQL配置 拿SQL Se ...
- .net core 基本概念
asp.net core 是基于 .net core的,所以能够跨平台. 目前存在.NET Framework (CLR), .NET Core (CoreCLR) or Mono,可根据项目的具体情 ...
- SQLite部署-无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块
近期刚使用SQLite,主要引用的是System.Data.SQLite.dll这个dll,在部署到测试环境时报无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块. (异常来 ...
- java Properties 配置信息类
Properties(配置信息类):主要用于生产配置文件和读取配置文件信息. ----> 是一个集合类 继承HashTable 存值是以键-值的方式. package com.beiwo.io; ...
- Django入门实践(3)
Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子是创建一个简单应用wiki ...
- tomcat配置https
1.开启使用https协议 编辑tomcat目录下的conf/server.xml文件 <Connector port="443" protocol="HTTP/1 ...
- DevOps is dirty work - Dream in One-Click
真是一晃就到年底,年初许的梦想实现了吗?这么残忍的问题还是不要知道答案了吧:) 这恍若隔世的大半年,不仅没有承接着上篇继续聊Continuous Delivery (CD),反而疑似荒废.然而,梦想还 ...
- springboot+redis
上篇整合了DB层,现在开始整合缓存层,使用redis. springboot驱动注解,使用spring注入JedisPool便可封装自己的redis工具类. package hello.configu ...
- jQuery 判断页面元素是否存在的代码
在原生的Javascript里,当我们对某个页面元素进行某种操作前,最好先判断这个元素是否存在.原因是对一个不存在的元素进行操作是不允许的. 例如: document.getElementById(& ...
- 【SIGGRAPH】【最终幻想XV】的战斗场景实时演示的要点解说
[SIGGRAPH][最终幻想XV]的战斗场景实时演示的要点解说 原文:西川善司 http://www.4gamer.net/games/999/G999902/20160730004/ ...