一句Python,一句R︱numpy、array——高级matrix

先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python。最好就是一句python,对应写一句R。

python中的numpy模块相当于R中的matirx矩阵格式,化为矩阵,很多内容就有矩阵的属性,可以方便计算。

以下符号:

=R=

代表着在R中代码是怎么样的。

使用之前先载入:

from numpy import *

1、数列构造

构造单一数列

arange(10)  =R=1:10   生成一个连贯的数列
arange(3,7)  =R=3:7
arange(3,10,2)  =R=  seq(3, 9, by = 2)
array(arange(4))  =R= matrix(1:4)

类似cut分组

np.linspace(2.0, 3.0, num=5)   =R= cut(2:3,5)  #类似cut功能,在2,3之间分成5份

matrix矩阵组

ma=arange(10).reshape(5,2)        #matrix(rep(1:10),nrow=5,ncol=2)  按行或列生成一定规则的
ones((2,3), dtype=int)  =R= matrix(rep(1,6),2,3)             #矩阵内元素都为1
random.random((2,3))        =R= matrix(runif(6),2,3)         #生成随机数       

2、矩阵属性

ma.shape                    #输出5,2(矩阵横纵维度)
ma.ndim =R=dim(ma)          #维度,dim(data)
ma.size                     #元素总数,5*2

3、矩阵运算

 (arange(4).reshape(2,2))* (arange(8).reshape(2,2))    #组内数字相乘
 dot( (arange(4).reshape(2,2)),(array([[1,2],[3,5]]))) #矩阵相乘
ma*=2                                                  #ma=ma*2,会原地的改变数组而不是创建一个新的数组

4、矩阵运用函数

ma.sum()
ma.min()
ma.max()
ma.sum(axis=0)  =R=apply(b,1,sum)  =R=colSums(data)      #axis=0代表纵向,列;axis=1,代表横向
ma.cumsum(axis=1)                       #按行,累计加总的结果

ma.sum/min代表所有元素加总.


参考文献:NumPy教程(一)

————————————————————————————————————————

延展一:array的用法

官方网址:https://docs.python.org/2/library/array.html

array模块定义了一种序列数据结构,看起来和list很相似,但是所有成员必须是相同基本类型。

array-固定类型数据序列array作用是高效管理固定类型数值数据的序列。

笔者在使用的时候,觉得array十分特别,笔者这样的新手,感觉有点驾驭不了。

1、生成的过程:

np.array([1,2])

需要np.,笔者在写的时候,常常用R的思维去写...

出错: array(1,2)  array([1,2])  np.array([1,2],[1,2])

2、添加数据过程:

a=[]

#append
a.append([1,2])

#insert
a.insert(2,1)
a.insert(2,[1,2])

append加在后面,insert(位置,内容)可以加在指定位置。这边笔者又要吐槽自己了...以为又在使用R,如果a是array格式的,append是不可以使用的。只有a=[]元组的时候,才可以append加进去。

   注意append用法:其中append用在list之中,在DataFrame/array无法使用

 3、切片过程:

>>>Array[0:]  ——>切片从前面序号“0”开始到结尾,包括“0”位
  [2, 3, 9, 1, 4, 7, 6, 8]

  >>>Array[:-1]  ——>切片从后面序号“-1”到最前,不包括“-1”位
  [2, 3, 9, 1, 4, 7, 6]

  >>>Array[3:-2]  ——>切从前面序号“3”开始(包括)到从后面序号“-2”结束(不包括)
  [1, 4, 7]

  >>>Array[3::2]  ——>从前面序号“3”(包括)到最后,其中分隔为“2”
  [1, 7, 8]

4、numpy对象纵向合并

用numpy中的concatenation函数进行合并。

一句Python,一句R︱numpy、array——高级matrix

————————————————————————————————————————

延展二:range的用法

一开始还是R的思维以为[1:2]就可以得到一个序列,python里面不是,需要range,有点像R里面的rep

range(0,2) =R= [1,2]

range(0,10,2) 0-9每隔2个取数一次

xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。

>>> xrange(5)

xrange(5)

>>> list(xrange(5))

[0, 1, 2, 3, 4]

>>> xrange(1,5)

xrange(1, 5)

>>> list(xrange(1,5))

[1, 2, 3, 4]

>>> xrange(0,6,2)

xrange(0, 6, 2)

>>> list(xrange(0,6,2))
[0, 2, 4]

参考:Python xrange与range的区别

上一篇:python模块大全


下一篇:ecmall 开发一个新模块