欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python 科学计算学习一:numpy快速处理数据(1)

程序员文章站 2022-04-19 15:43:38
以下是记录的numpy使用过程中比较重要的,建议亲自敲一下,比较有效果。 import numpy as np 1,a=np.array([1,2,3,4]) 由 a.s...

以下是记录的numpy使用过程中比较重要的,建议亲自敲一下,比较有效果。


import numpy as np


1,a=np.array([1,2,3,4]) 由 a.shape知道a是一个列向量,而a=([[1,2,3,4]])是一个横向量;

2,c=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], 当你懒得算有计算每一排有几个的时候可以这样写:c.shape=4,-1 这样的想过也是一样的。但是不能均分的时候就会报错。
[4, 4, 5],
[6, 7, 7],
[5, 6, 8]])

3,d=c.reshape 是在不改变原来数据的情况下实现对数据的变形;

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]])

注意区分:

a[:2] 和a[[0,1]] a[[0,1],:]都可以表示上面的结果。但是第一个切片是按顺序的,第二个可以随意。比如说:

>>> a[[1,2,0,2]]
array([[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[ 0, 1, 2, 3, 4, 5],
[20, 21, 22, 23, 24, 25]])