python科学计算:numpy

时间:2022-02-16 21:28:04

毕设的程序设计中使用了python来处理数据,主要使用的是numpy包,网上大部分对numpy进行介绍的教程比较老旧,想要使用的功能不太容易找到。因此,写这篇文章来对现有的一些资源就行整理,当然想要更全面的了解numpy的使用还是从访问官方手册开始

安装

win下

pip isntall numpy

当然最好还是直接安装pythonxy或者Anaconda的集成包。

具体特性的使用

import numpy as np

  1. a=np.array([1,2,3,4])a.shape可知结果为(4,),说明a是一个列向量
    a=([[1,2,3,4]])是一个横向量 ;

  2. c=np.array([[1, 2, 3, 4],[4, 5, 6, 7],[7, 5, 6, 8]])对c的shape属性赋值可以改变数组的形状。c.shape=4,3 就是将这个3*4的数组变为4*3的数组;结果是:array([[1, 2, 3],[4, 4, 5],[6, 7, 7],[5, 6, 8]])。当你懒得算有计算每一排有几个的时候可以这样写:c.shape=4,-1,这样的效果也是一样的,-1可以用来代替一个具体值。但是在不能均分的情况下就会报错。

  3. d=c.reshape 是在不改变原来数据的情况下实现对数据的变形,也可以实现上述的4*3数组变为3*4的数组功能,d=c.reshape((3,4))

  4. type(c)查看c的数据类型,c.dtype查看c里面的数据的类型;所以也可以在定义的时候就定下数据类型, b=np.array([1.2,2,2,3.1],dtype=np.int),结果是array([1, 2, 2, 3])

  5. arange()相当于函数range(),指定开始值,终值,步长来创建一维数组。注意 不包括终值 ,例如: b=np.arange(0,1,0.2) ,结果是:array([ 0. , 0.2, 0.4, 0.6, 0.8]) 。但是linspace()却是要包括终值的。他是指定开始值,终值,数据个数来创建一维数组。例如: b=np.linspace(1,9,10),就是要将1到9之间均分为9份,结果是:array([ 1. , 1.88888889, 2.77777778, 3.66666667, 4.55555556,5.44444444, 6.33333333, 7.22222222, 8.11111111, 9. ])

  6. zeros()ones()empty()都是按照指定的形状生成相应的数组。例如: np.ones((2,3)),结果就是 array([[ 1., 1., 1.], [ 1., 1., 1.]]) np.zeros((3,4),dtype=np.float),结果就是array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.],[ 0., 0., 0., 0.]])。唯一不同的是 np.empty((5,2)),结果为array([[ 2.43631958e-266, 0.00000000e+000], [ 0.00000000e+000, 0.00000000e+000],[ 0.00000000e+000, 0.00000000e+000], [ 0.00000000e+000, 0.00000000e+000], [ 0.00000000e+000, 0.00000000e+000]]), 里面不是数据,而是给数据分配的空间地址。

  7. 切片 a=np.arange(0,10,1),我们可以使用a[3:7],表示a[3]a[6]的所有元素组成的数组array([3, 4, 5, 6]);还可以在其中加上步长,但都 不包括最后一个元素。而a[:-1],其中 含有负数就表示从后面开始;若是步长为负数,表示倒序排列 ,如:a[7:1:-1] 结果是array([7, 6, 5, 4, 3, 2])

  8. 通过整数列表获得元素组成新的数组:a[[1,2,2,3,5]]。 取出a中的元素构成新的数组,结果是array([1, 2, 2, 3, 5]);下标也可是负数;

  9. np.random.rand(10)产生数值为0~1的随机数组;

  10. 记住这个例子:

>>> a=np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)
>>> a
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]]
)

其中a[3,3:6]表示第4行的第4到6列,结果是array([33, 34, 35])
a[:2]表示前两列:
array([[ 0, 1, 2, 3, 4, 5],[10, 11, 12, 13, 14, 15]])
a[:,2]表示第3列,array([ 2, 12, 22, 32, 42, 52])
a[1::,::2]表示的是
array([[10, 12, 14],[20, 22, 24],[30, 32, 34],[40, 42, 44],[50, 52, 54]]),即从第二行开始,选取每行中的元素,步进为2。

参考资料

  1. http://blog.csdn.net/ikerpeng/article/details/19926799?utm_source=tuicool&utm_medium=referral