首页 > 编程知识 正文

python的networkx,python networkx教程

时间:2023-05-04 01:49:45 阅读:220427 作者:2329

     python和networkx的三个给力科学计算的基友:numpy、scipy和matplotlib。

     numpy擅长数组处理,多维数组的产生与访问,还有庞大的函数库,包括:求和、平均值、方差、最值、排序、矩阵、矩阵类和线性代数模块等。其安装,在第一篇中有说。

     matplotlib擅长画图,点和线多形态展示、坐标轴变换等。其安装在第一篇有说。

     scipy很强大,常微分方程求解、信号处理、图像处理等。安装好python编译器后,到scipy官网上下载相应的软件包(http://sourceforge.net/projects/scipy/files/),由于本人安装的是python-2.6,下载相应版本,然后点击exe安装;安装完毕,在IDEL里面输入import scipy进行测试(ps:网上有说用easy_install去安装,结果没有成功,应该是Linux下可以,windows下不可以)

     这三者基本次序是数据存在numpy中,低级处理用numpy,高级处理用scipy,数据显示用matplotlib。

2.  numpy

     numpy提供了两个基本的对象:narray和ufunc。

     narray:存储单一数据类型的多维数组

     ufunc:能够对数组进行处理的函数

2.1 narray对象

     在narray对象中存储这多维度数组,有数组就有类型。基本的数据类型有:

    

numpy中的基本数据类型 类型类型说明boolTrue or Falseint所处平台的整型(一般为int32或int64)int8 字节型(-128-127)int1616位整型(-32768-32767)int3232位整型int64 unit8无符号整型(0-255)unit16无符号整型(0-65535)unit32 unit64 float64位标准floatfloat16半精度浮点数:1位标志位、5位指数位、10位小数位float32单精度浮点:1、8、23float64双精度:1,11,52complex标准的128位复数     当然,除了基本的数据类型,numpy还支持数据结构类型的数组。

   (1)narray对象的创建:

import numpy as np>>> a=np.array([1,2,3,4])>>> b=np.array((6,7,8,9))>>> a.shape(4,)>>> a.shape=2,2>>> aarray([[1, 2], [3, 4]])>>> a.shape=1,-1>>> aarray([[1, 2, 3, 4]])>>> a=np.arange(0,1,0.1)#产生(0,1]的数组,数组每个元素直接的差为0.1>>> aarray([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])>>> a=np.linspace(0,1,10)#linsapce(a,b,endpoint=True | False),True的时候产生[0,1]的等差数列,False的时候为[0,1)>>> aarray([ 0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444, 0.55555556, 0.66666667, 0.77777778, 0.88888889, 1. ])>>> a=np.logspace(0,1,12,base=2,endpoint=false)Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> a=np.logspace(0,1,12,base=2,endpoint=false)NameError: name 'false' is not defined#logsapce产生等比数列,logspace(a,b,c,base=10 | 2,endpoint=True | False),base指定了a和b的指数,代表了范围;c指定了等比数列的元素个数>>> a=np.logspace(0,1,12,base=2,endpoint=False)>>> aarray([ 1. , 1.05946309, 1.12246205, 1.18920712, 1.25992105, 1.33483985, 1.41421356, 1.49830708, 1.58740105, 1.68179283, 1.78179744, 1.88774863])>>> a=np.zeros(10)>>> aarray([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])>>> a=np.ones(10)>>> aarray([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) (2)存取元素

    数组访问的下标从0开始

    特定元素的index访问。可以用index访问,例如对于数组a,可以有:a[5]

    范围index访问。a[2:5],下标从2到5(左闭右开的区间)

                                  a[1:-1:2],下表从1到尾部,2表示每隔一个元素获取一个元素

                                  a[5:1:-2],第三个参数即步长为负数,这里为-2,即逆序每隔一个元素获取一个元素

   数据结构数组的建立与访问:(可以看到,数组内部就像字典,其访问根据索引)

>>> persontype=np.dtype({'names':['name','age','weight'],'formats':['S32','i','f']},align=True)>>> a=np.array([("Zhang",32,75.5),("wang",24,65.3)],dtype=persontype)>>> aarray([('Zhang', 32, 75.5), ('wang', 24, 65.300003051757812)], dtype=[('name', '|S32'), ('age', '<i4'), ('weight', '<f4')])>>> a[0]('Zhang', 32, 75.5)>>> a[0].nameTraceback (most recent call last): File "<pyshell#33>", line 1, in <module> a[0].nameAttributeError: 'numpy.void' object has no attribute 'name'>>> a[1]['name']'wang'>>>
2.2 ufunc运算

x=np.linspace(0,2*np.pi,10)>>> xarray([ 0. , 0.6981317 , 1.3962634 , 2.0943951 , 2.7925268 , 3.4906585 , 4.1887902 , 4.88692191, 5.58505361, 6.28318531])>>> y=np.sin(x)>>> yarray([ 0.00000000e+00, 6.42787610e-01, 9.84807753e-01, 8.66025404e-01, 3.42020143e-01, -3.42020143e-01, -8.66025404e-01, -9.84807753e-01, -6.42787610e-01, -2.44929360e-16])>>> np.sin(x,out=x) #在计算时,指定了输出out为x,所以x中的元素也改变了array([ 0.00000000e+00, 6.42787610e-01, 9.84807753e-01, 8.66025404e-01, 3.42020143e-01, -3.42020143e-01, -8.66025404e-01, -9.84807753e-01, -6.42787610e-01, -2.44929360e-16])>>> xarray([ 0.00000000e+00, 6.42787610e-01, 9.84807753e-01, 8.66025404e-01, 3.42020143e-01, -3.42020143e-01, -8.66025404e-01, -9.84807753e-01, -6.42787610e-01, -2.44929360e-16])>>> np.add(x,y)#add(x,y[,z])即可以指定将结果存入z中,如果没有z,则默认存入y中#出了add之外,数值运算还有数组减法substract(x,y[,z]),乘法multiply(x,y[,z]),元素取负negative(x[,y]),x**y-power(x,y[,z]),x%y-remainder(x,y[,z])#还有布尔运算,equal(x,y[,z]),不等not_equal(x,y[,z]),小于等于less_equal(x,y[,z]),大于greater,大于等于greater_equalarray([ 0.00000000e+00, 1.28557522e+00, 1.96961551e+00, 1.73205081e+00, 6.84040287e-01, -6.84040287e-01, -1.73205081e+00, -1.96961551e+00, -1.28557522e+00, -4.89858720e-16])>>>

此外,还有求和sum、最小min、最大max、乘积dot 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。