一,基本运算

>>> a = array([1,2,3,4])
>>> a
array([1, 2, 3, 4])
>>> b=arange(4)
>>> b
array([0, 1, 2, 3])
>>> a + b
array([1, 3, 5, 7])
>>> a - b
array([1, 1, 1, 1])
>>> a *b
array([ 0, 2, 6, 12])
>>> a*2
array([2, 4, 6, 8])
>>> a**2
array([ 1, 4, 9, 16])
>>> a<2
array([ True, False, False, False], dtype=bool)

>>> a = array([[1,2], [2, 3]])
>>> a
array([[1, 2],
[2, 3]])

>>> b=arange(4).reshape(2,2)
>>> b
array([[0, 1],
[2, 3]])

>>> a*b         #对应元素直接乘
array([[0, 2],
[4, 9]])
>>> dot(a,b)    #矩阵的乘法
array([[ 4, 7],
[ 6, 11]])

二, +=, *= 不会创建新的数组,而只是更改已存在的数组

>>> a = ones((2,2))

>>> b = random.random((2,2))

>>> a
array([[ 1., 1.],
[ 1., 1.]])
>>> b
array([[ 0.10061284, 0.23855578],
[ 0.93143312, 0.49098678]])

>>> a *= 3

>>> a             # a本身 发生了改变
array([[ 3., 3.],
[ 3., 3.]])

>>> b += 1
>>> b
array([[ 1.10061284, 1.23855578],
[ 1.93143312, 1.49098678]])

>>> a += b
>>> a
array([[ 4.10061284, 4.23855578],
[ 4.93143312, 4.49098678]])

三, sum, min, max方法

>>> b.sum()
5.7615885259105326
>>> b.min()
1.1006128420882511
>>> b.max()
1.9314331248999363

>>> b = arange(6).reshape(2,3)
>>> b
array([[0, 1, 2],
[3, 4, 5]])
>>> b.sum(axis = 0)    #可以指定到某个axis, 
array([3, 5, 7])
>>> b.sum(axis = 1)
array([ 3, 12])
>>> b.min(axis = 1)
array([0, 3])
>>> b.min(axis = 0)
array([0, 1, 2])

四, 通用函数, ufunc

>>> a = arange(4)
>>> a
array([0, 1, 2, 3])
>>> min(a)
0
>>> sum(a)
6
>>> max(a)
3
>>> exp(a)
array([ 1. , 2.71828183, 7.3890561 , 20.08553692])
>>> sqrt(a)
array([ 0. , 1. , 1.41421356, 1.73205081])

>>> b = array([4,5,6,7])
>>> add(a,b)
array([ 4, 6, 8, 10])
>>> mean(a)
1.5

>>> std(a)
1.1180339887498949

>>> cov(a)
array(1.6666666666666667)

>>> sort(a)
array([0, 1, 2, 3])

当然还有更多。。。。

五, 索引切片和迭代

一维数组:

>>> a = arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[0]
0
>>> a[-1]
9
>>> a[0:3]
array([0, 1, 2])
>>> a[:6:2] = 1000  #相当于a[0:6:2] = 1000

>>> a
array([1000, 1, 1000, 3, 1000, 5, 6, 7, 8, 9])
>>> a[::-1]
array([ 9, 8, 7, 6, 5, 1000, 3, 1000, 1, 1000])
>>> for i in a:
... print i*2

...
2000
2
2000
6
2000
10
12
14
16
18

二维数组:

>>> b
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> b[1,1]   # 逗号前面是horizontal axis, 逗号后面是vertical axis
5
>>> b[ : , 3]    # 全部横轴的第四列的元素
array([ 3, 7, 11, 15])
>>> b[0:-1, 3]
array([ 3, 7, 11])
>>> b[1:3, :]     #第二,三行的所有元素
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

>>> for i in b:   #i对应的是row
... print i
...
[0 1 2 3]
[4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]

如果想返回每个元素, 用flat方法。

>>> for i in b.flat:    #i 对应element
... print i
...
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

更多细节请阅读:

http://phddreamer.blog.163.com/blog/static/18993409620135271852137/

http://scipy.org/Numpy_Example_List

http://scipy.org/NumPy_Tutorial

http://www.tramy.us/

 

python numpy 的运算的更多相关文章

  1. Python/Numpy大数据编程经验

    Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点.   ...

  2. 在python&numpy中切片(slice)

     在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的操作.此时就 ...

  3. Python numpy中矩阵的用法总结

    关于Python Numpy库基础知识请参考博文:https://www.cnblogs.com/wj-1314/p/9722794.html Python矩阵的基本用法 mat()函数将目标数据的类 ...

  4. Python NumPy学习总结

    一.NumPy简介 其官网是:http://www.numpy.org/ NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Num ...

  5. CS231n课程笔记翻译1:Python Numpy教程

    译者注:本文智能单元首发,翻译自斯坦福CS231n课程笔记Python Numpy Tutorial,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客翻译完成,Flood Sung ...

  6. NumPy算数运算

    NumPy - 算数运算 用于执行算术运算(如add(),subtract(),multiply()和divide())的输入数组必须具有相同的形状或符合数组广播规则. 示例 import numpy ...

  7. Python Numpy基础教程

    Python Numpy基础教程 本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x 什么是Numpy Numpy = Numerical + Pyth ...

  8. python numpy库np.percentile用法说明

    在python中计算一个多维数组的任意百分比分位数,此处的百分位是从小到大排列,只需用np.percentile即可…… a = range(1,101) #求取a数列第90%分位的数值 np.per ...

  9. Python Numpy shape 基础用法(转自他人的博客,如涉及到侵权,请联系我)

    Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入 ...

随机推荐

  1. 为不同浏览器创建XMLHttpRequest对象

    /*声明一个XMLHttpRequest对象*/ var xmlHttp=false; /*@cc_on@*/ /*if(@_jscript_version>=5) try { xmlHttp= ...

  2. [开发笔记]-使用bat命令来快速安装和卸载Service服务

    一般我们在编写完Service服务程序后,都是通过cmd命令提示窗口来安装或卸载服务,但频繁的在cmd窗口中去“拼”文件的路径着实让人“不能忍”.所以,我们需要一钟“更快捷”的方式来进行安装或者卸载操 ...

  3. 自动登录 登陆成功那个alert遮盖一直存在bug

    手动登陆的时候,登陆成功MBProgressHUD message:@"登陆成功" 然后再dispatch_after 里调用MBProgressHUD hideHUD隐藏可以成功 ...

  4. java抽象类与接口 详解

    在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类往往用来表征我们在对问题 ...

  5. 自定义ImageView

    package com.example.myimageview; import android.content.Context;import android.graphics.Bitmap;impor ...

  6. maven的简单安装与配置

    什么是Maven? Maven可以被理解成"知识的积累",也可以被翻译为"专家".它是一个项目管理工具. 它的主要服务即源于java平台的项目构建.依赖管理和项 ...

  7. Discuz 论坛的搭建(五)

    配置discus论坛 1.下载discus论坛代码 2.解压缩到ApacheProject目录下 3.把discuz的upload文件copy到discuz文件夹下,然后删除upload文件夹 4.修 ...

  8. Mainstoryboard

    页面间进行跳转 [self performSegueWithIdentifier:@"signInSuccess" sender:self] signSuccess是miansto ...

  9. C++数据结构之List--线性实现

    List(表)类似于队列,不同于队列的是,list可以随机读取/修改/插入某一position,通过position这一位置信息就可以直接修改相应位置的元素.实现方式和队列的类似,多了个positio ...

  10. Java中线程的锁和数据库中的事务隔离级别

    当涉及到两个或多个线程操作同一个资源时,就会出现锁的问题. 数据库中的某一条记录或者是某一个对象中的字段,可以修改,也可以读取,一般情况下,读取的那个方法应该加锁(即用synchronized互斥), ...