内容简介:python扩展库1—numpy
1 数组对象
创建数组
import numpy 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) print a print 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]) print np.array(a) print np.sqrt(a) print np.exp(a) print np.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.nan print np.isnan(a) #[[False True] # [False False]]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【php 扩展开发】扩展生成器
- 喧喧发布 1.6.0 版本,扩展机制增强,支持服务器扩展
- 为vscode编写扩展
- JavaScript——DOM扩展
- Mac内核扩展开发
- VisualStudio 扩展开发
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
笨办法学Python 3
[美]泽德 A. 肖 / 王巍巍 / 人民邮电出版社 / 2018-6-1 / CNY 59.00
本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。本书是基于Python 3.6版本编写的。 本书结构非常简单,除“准备工作”之外,还包括52个习题,其中26个覆盖了输入/输出、变量和函数3个主题,另外26个......一起来看看 《笨办法学Python 3》 这本书的介绍吧!