首页 > 其他 > 详细

Numpy学习笔记

时间:2020-04-29 13:20:31      阅读:45      评论:0      收藏:0      [点我收藏+]

Numpy学习笔记

Numpy是Python的一个数值计算库

技术分享图片

Numpy使用ndarray对象来处理多维数据

技术分享图片

np.array创建darray

技术分享图片

Numpy的优势

技术分享图片

ndarray的元素是连续存储的,因此随机读写性能会好

技术分享图片

ndarray的属性

技术分享图片

关键且常用的属性就是shape和dtype

常见的类型:

技术分享图片

在创建ndarray时,我们可以指定类型:

技术分享图片

如果不指定,整数默认是int64,小数默认是float64

数组修改类型:

技术分享图片

生成数组的方式

技术分享图片

linspace第三个参数表示生成的数组中元素的个数

np.arange的用法和python的range比较像,但是它是可以生成小数,而range只能是整数

我们可以使用np.round来确定小数的保留位数

技术分享图片

均匀分布和正态分布

均匀分布:np.random.uniform(low,high,size)

low: 采样下界,float类型,默认值为0;
high: 采样上界,float类型,默认值为1;
size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出m*n*k个样本,缺省时输出1个值。

正态分布:np.random.normal(loc,scale,size)

loc:float

概率分布的均值,对应着整个分布的中心center

scale:float

概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高

size:int or tuple of ints

输出的shape,默认为None,只输出一个值

数组变形

技术分享图片

数组序列化

技术分享图片

输出为:

技术分享图片

数组去重

技术分享图片

其实python也有一个内置的去重函数叫set(),但是其传入的只能是一维数组,我们也可以将ndarray通过 数组名.flatten()压缩为一维再使用

逻辑运算

  1. 直接对数组中元素值进行布尔运算,返回布尔数组:

    技术分享图片

  2. 对于上面返回的布尔数组,可以再次传入原始数组中从而获取值为True的元素组成的数组

    技术分享图片

  3. 还可以对上面的数组直接赋值

    技术分享图片

    也就是对满足表达式的元素直接赋值。省去了for循环

  4. 技术分享图片

  5. 技术分享图片

    注意上面逻辑与和逻辑或的用法

统计运算

技术分享图片

可以选择按行统计还是按列统计

技术分享图片

技术分享图片

可以用ndarray.方法名,也可以用np.函数名

argmin返回的是最小值的位置而不是最小值

数组间运算

技术分享图片

数组与数的运算实质是数和数组中所有元素的运算

数组之间也可以运算:

技术分享图片

可以看到,宽度一致时,是一层一层相减的。但是这样要求t7的长必须为1,t7要是两层的话就不行了。同样地,t7如果是一列也可以算

矩阵运算

numpy中数组和矩阵不是一种类型,矩阵的存储使用的是matrix数据类型,当然用ndarray也没什么问题

使用np.mat来创建matrix

矩阵乘法:

对于ndarray类型的话:

技术分享图片

对于matrix类型,直接使用*即可

数组的合并与分割

技术分享图片

hstack是对数组进行水平拼接,而vstack是进行垂直拼接

技术分享图片

np.concatenate可以进行水平和垂直拼接,但是需要传入参数来确定是怎么拼接

技术分享图片

np.split可以传入要分割的个数(此时默认每个里的元素数量是相同的),也可以按下标分割,例如上图中第二个例子将前3个、4-5个等等分成不同组

文件的读取和数据处理

技术分享图片

读取csv

但是这样的读取是存在问题的:

原csv是这样:

技术分享图片

读出来是这样:

技术分享图片

(nan:not a number)

对于字符串会自动读成nan,因为ndarray中元素的类型需要是一样的,所以不能第一行是字符串而剩下的是数。这个nan的类型和其他元素的类型保持一致

我们可以看到原本的数据中其实就是有两个缺失值的,这个一般怎么处理呢?一种方法是,如果我们的数据够多,就可以直接删除这个缺失值所在的样本;另外一个思路是求缺失值所在的那一列的平均值填入,具体函数如下:

技术分享图片

所以我们一般不用numpy来读文件,而只用它来处理文件

而对于数据处理,pandas更为方便

Numpy学习笔记

原文:https://www.cnblogs.com/jiading/p/12801132.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!