一,基本运算

>>> 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. java面向对象编程—— 第三章 程序流程控制

    3.1流程控制 三种基本技术可以改变程序的控制流程: ①   调用方法:调用方法将导致控制流程离开当前方法,转移到被调用的方法: ②   选择:java中有两种做出选择的机制:if/else语句和sw ...

  2. (转载)Java基础知识总结

    写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习新技 ...

  3. mongoose深层修改问题

    https://cnodejs.org/topic/50dde64ea7e6c6171a80a678 各位大神好,好久没写点什么东西了,最近也是cnode社区不知道咋的了都登录不进去,今天总算能回到这 ...

  4. Quartz之主方法运行

    import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; impo ...

  5. RPI学习--wiringPi_setups

    reference: http://wiringpi.com/reference/setup/ There are four ways to initialise wiringPi. wiringPi ...

  6. OpenCV之响应鼠标(三):响应鼠标信息

    转自:http://blog.csdn.net/haihong84/article/details/6599838 程序代碼如下: #include <cv.h>#include < ...

  7. ssh原理

     客户端向服务器端发出连接请求 服务器端向客户端发出自己的公钥 客户端使用服务器端的公钥加密通讯密钥然后发给服务器端 如果通讯过程被截获,由于窃听者即使获知公钥和经过公钥加密的内容,但不拥有私 ...

  8. opencv中的Mat类型

    Mat类型主要是跟matlab中的数据类型一样.故用起来很方便. Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,对于一些大型的开发,有时候投入的lpImage ...

  9. 《day11---内部类&匿名内部类》

    //79-80-面向对象-内部类-体现 /* 当A类中的内容要被B类直接访问,而A类还需要去创建B类的对象,访问B的内容时, 这时可以将B类定义到A类的内部,这样访问更为便捷. 将B类称之为内部类(内 ...

  10. c规范(2)

    一:对齐 1 程序的分界符' {'和' }'应独占一行并且位于同一列,同时与引用它们的语句左对齐. 2  { }之内的代码块在' {'右边数格处左对齐. 二:注释 注释通常用于:( 1)版本.版权声明 ...