python拓展库numpy_Python扩展库1—numpy

1 数组对象

创建数组

importnumpy as np

a= np.arange(10)

b= np.arange(2,10,1) #[2,10)步长为1

c = np.linspace(0,10,20) #[0,10]共20个

d = np.array([range(5)]) #用list/tuple创建数组

快速生成x*y的全零数组

a = np.zeros((3,4))

0~1的随机数

a = np.random.rand(5)

一维数组转化为二维数组

a = np.arange(20)

a= a.reshape(4,5)

ps:使用reshape(-1,5)得到一样的结果,会根据列自动适应行

构造更高维的

a = a.reshape(2,2,5)

二维数组转化为一维数组

a = np.array([[1,2,3],[4,5,6]])

a= np.ravel(a)

查看数组属性

a.ndim查看维度,a.shape查看各维度大小,a.size查看元素个数,a.dtype查看元素类型

数组切割vsplit()和hsplit()

vsplit()来进行分行,而hsplit分列,np.vsplit(arr,indices)

a = np.arange(18).reshape(-1,3)printaprint np.vsplit(a,3)print np.hsplit(a,3)

输出为

array([[ 0, 1, 2],

[3, 4, 5],

[6, 7, 8],

[9, 10, 11],

[12, 13, 14],

[15, 16, 17]])

[array([[0,1, 2],

[3, 4, 5]]), array([[ 6, 7, 8],

[9, 10, 11]]), array([[12, 13, 14],

[15, 16, 17]])]

[array([[ 0],

[3],

[6],

[9],

[12],

[15]]), array([[ 1],

[4],

[7],

[10],

[13],

[16]]), array([[ 2],

[5],

[8],

[11],

[14],

[17]])]

按指定位置切分

将第二个参数改为list,来指定切分的位置

print np.vsplit(1,4) #以第1和第4行进行切分

数组操作

1) ‘+’,’-’,’*’,’/’ 加减乘除

2)开根号、指数操作

a = np.array([1,2])printnp.array(a)printnp.sqrt(a)printnp.exp(a)printnp.square(a)print np.power(a,5)print a**5 #和np.power(a,5)效果一样

3)最大最小值

a.min()

a.max()

a.sum()

a.min(axis=0) #minimun element in each column

a.min(axis=1) #minimun element in each row

a.max(axis=0)

a.max(axis=1)

4)数组均值、中位数

np.mean(a)

np.median(a)

数组取值

1)可以直接使用下标取值,直接赋值为浅拷贝(b=a,为b指向了a的内存地址),要真正拷贝,使用copy

a = np.array([[1,2],[3,4]])

b=a

c=a.copy()print a[0][0], b[0][0], c[0][0] #1 1 1

b[0][0] = 5

print a[0][0], b[0][0], c[0][0] #5 5 1

2)利用’:’可以访问某一维的全部数据

a = np.arange(20).reshape(4, 5)print a[:,[1,3]] #取出a的每一行的第2到4个元素

数组拼接

a = np.array([1,2,3])

b= np.array([4,5,6])

c= np.hstack([a,b]) #[1, 2, 3, 4, 5, 6]

d = np.vstack([a,b]) #[[1, 2, 3],

#[4, 5, 6]]

二 矩阵对象

创建矩阵

矩阵是二维的,而数组的可以是任意正整数维

a = np.arange(5)

a= np.mat(a) #[[0, 1, 2, 3, 4]]

b = np.mat('1 2;3 4') #[[1, 2],

#[3, 4]]

矩阵乘法

矩阵的’*’操作符进行的是矩阵乘法,乘号左侧的矩阵列和乘号右侧的矩阵行要相等,而在数组中’*’操作符进行的是每一元素的对应相乘,乘号两侧的数组每一维大小需要一致

矩阵转置

a = np.array([[1, 2, 3], [4, 5, 6]])print np.transpose(a) #数组用transpose

print np.matrix(a).T #矩阵用T

矩阵求逆

a = np.mat('1.0 2.0;3.0 4.0')

b=nlg.inv(a)print a*b #[[1.0000000e+00 0.0000000e+00]

#[8.8817842e-16 1.0000000e+00]]

特征值与特征向量

eig_value, eig_vector = nlg.eig(a)

3 其他

缺失值处理

用nan作为缺失值,用isnan判定

a = np.random.rand(2,2)

a[0,1] =np.nanprint np.isnan(a) #[[False True]

#[False False]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值