python重点知识归纳_python之numpy包知识要点总结

一、简介

numpy主要是用来存储和处理大型矩阵,提供了一种存储单一数据类型的多维数组对象------ndarray。还提供了多种运算函数,能够完成数据计算和统计分析,是数据分析的重要工具包。

二、数组对象(ndarray)

1、创建数组对象

(1)、创建自定义数组

1、numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)

object:就是要创建的数组

dtype:表示数组所需的数据类型,默认是None,即保存对象所需的最小类型

ndmin:指定生成数组应该具有的最小维数,默认为None。

d3f6fe51a33b2fb9f7c437f9c2d7c5f7.png

2、通过arange函数创建一维数组:arange(start, end, sep)

042eddc2768ea4f85100b565b347b7dc.png

3、创建一维等差数组:linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

4c7b5b2ae338734aed937e2a0b31f151.png

4、创建等比数列:logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

2944f05e7a938014fd6e4df0cf9f71e5.png

5、创建全零数组:zeros(shape, dtype=None, order='C')

1d1984b3ec4d6382e0506cb232161edb.png

6、创建全为1的数组:ones(shape, dtype=None, order='C')

cf37e428799079ebed20860d4eda7127.png

7、创建对角线全为1的多维数组:eye(N, M=None, k=0, dtype=float)

c7aa86ea8bccae6e4a15c96b030b7b03.png

8、创建自定义对角线数值的数组:diag(v, k=0)

e433d85091343b67ab64cef3057fb5db.png

(2)、创建随机数组,利用numpy包里的random模块

1、创建0-1的随机浮点数一维数组:random.random(num)

329837199977ebc77e0a01eed73e39cf.png

2、创建指定范围的随机整数多维数组:randint(low, high=None, size=None, dtype='l')

1d1c85693e476231c7f85a571843663c.png

3、创建服从均匀分布的随机数组,范围[0, 1):rand(*dn)

9271c681f8c8c4ff9da13966d75864a6.png

4、创建服从正态分布的随机数组:randn(*dn)

0b9bb0c1f8c2ad744097c958252366b8.png

2、数组对象属性

---------数组属性:

ndim:表示数组维数,返回int类型

shape:表示数组的形状大小,对于n行m列的矩阵,形状为(n,m),返回tuple类型

size:表示数组的元素总个数,等于数组形状的乘积,返回int类型

dtype:描述数组中的元素的类型,返回data-type

itemsize:表示数组的每个元素的大小(以字节为单位),返回int类型

-----------访问属性:

5461c6c8d8ccf36a77b8dabd46c8f170.png

3、改变数组形状

(1)、使用shape改变形状

9bcf44b97167d0bafa7f6023ce41b735.png

(2)、使用reshape改变形状

0795fe4f98e7bd8651a00b493ea01c34.png

(3)、展平数组:

----使用ravel函数

e257b07585dde9c529b5a9185425da4d.png

----使用flatten函数

9acbbad180d22943301a5d9020e3d78b.png

(4)、组合数组:

-----使用hstack/vstack函数

4d5cb2f674f7027c47f421e308ed4e4d.png

-----使用concatenate函数

6af6e078c16447d291e9b298f6c2e8e2.png

(5)、分割数组:

-----使用hsplit/vsplit函授

931a7dfc348a9a969290fbfb15dd19b1.png

-----使用split函数

fd9853e5948dedff7c6b5836758c06b3.png

4、访问数组

(1)、一维数组的访问

723efb93e259e5613da9c82571aa0511.png

(2)、二维数组的访问

fe29843242fe1426d40a3bc0bf79e5cf.png

三、数据类型

numpy的数据类型比python内置的数据类型多,常用的数据类型如下所示:(引用菜鸟教程:http://www.runoob.com/numpy/numpy-dtype.html)

0cf458d93eec86301602f99ec0b2f196.png

四:numpy的矩阵对象

1、创建矩阵

667915c93045a3862bd6c7767bd624e9.png

2、矩阵属性

T:返回自身的转置

H:返回自身的共轭转置

I:返回自身的逆矩阵

A:返回自身数据的二维数组的一个视图

e86d9d8b131115715ab598cdb1a252b0.png

3、矩阵运算

(1)、四则运算

bea8a90be55dec82188f88c5f0a8c927.png

a6cc1cfed9bc4f28434630505e0d3cb3.png

c7bdbf0abcc47ff40a8d45e0c57ae56e.png

13336785c23c88bb02d42bc437350d65.png

(2)、比较运算

比较运算符:>、=、<=、!=

返回结果:一个布尔数组,也就是每个元素的比较结果

adbe89a4fe3317cdd34a341b4e5a1a25.png

(3)、逻辑运算

逻辑运算符:逻辑或-----any,逻辑与------all

返回结果:一个布尔值True或False

2d945c51612e9b1101a4e76de04bd11c.png

五、ufunc函数(universal function)

1、概念:

全程通用函数(universal function),是一种能够对数组中所有元素进行操作的函数,结果是以数组形式输出,因此不需要对数组每个元素都进行操作,所以比math库中的函数操作效率高。

2、广播机制

广播(broadcasing)是指不同形状的数组之间进行算数运算的一种方式。

3、广播机制----->四原则

参与运算的数组其中一个的维度为1且列相等

参与运算的数组的维度相等,则其中一个的列为1且行相等

参与运算的数组都向其中形状最大的看齐,即根据shape属性最大的运算,形状不足的就加按照行或列补齐,也就是行复制或者列复制

输出的数组跟最大的数组形状相同

c3a34c1a4d7a1f372732dd75603c0f4f.png

六、利用numpy统计分析

1、文件的读写

(1)、以二进制形式写入/读取文件

-----写入文件:save(file, arr, allow_pickle=True, fix_imports=True)/savez(file, arr, allow_pickle=True, fix_imports=True)

701305db5bbe4eaa13343895341986ac.png

-----读取文件:load(file, mmap_mode=None, allow_pickle=True, fix_imports=True,encoding='ASCII')

1109abe3f05711c0dce52c5fee14fdf7.png

4a0f1273d6808bccdd03143172f58a83.png

(2)、以文本形式写入/读取文件(txt,csv格式)

-----写入文件:loadtxt(fname, dtype=float, comments='#', delimiter=None,converters=None, skiprows=0, usecols=None, unpack=False,ndmin=0)

4d475ac23b7ba4fd0eee2ddcbb42ec93.png

-----读取文件:loadtxt(fname, dtype=float, comments='#', delimiter=None,converters=None, skiprows=0, usecols=None, unpack=False,ndmin=0)

372c587afd294c1524b3743befaafbaa.png

2、数组排序

(1)、直接排序

方法:sort(a, axis=-1, kind='quicksort', order=None)

参数:axis=1 为沿横轴排序; axis=0 为沿纵轴排序,默认沿横轴排序

b30f03ad2e9024948dcc798583a638cd.png

(2)、间接排序

方法:argsort(a, axis=-1, kind='quicksort', order=None),返回的是下标

参数:axis=0 为沿横轴排序; axis=0 为沿纵轴排序,默认沿横轴排序

c7b948f7eedf3a72d3b0a9e2c04e55e0.png

3、数据去重

方法:unique(ar, return_index=False, return_inverse=False,return_counts=False, axis=None)

a90537d15319b7fcb93bcebca1f4866f.png

4、重复数据,可以理解为数据的复制

(1)、重复整个数组

方法:tile(A, reps)

参数:A表示数组,reps表示重复的个数

(2)、重复数组中的元素

方法:repeat(a, repeats, axis=None)

参数:a 表示传入的数组,repeats表示要重复的次数,axis=1表示沿横轴重复,axis=0表示沿纵轴重复

3d4bfb7b6eb79170509968d72d202998.png

5、常用统计函数

参数:axis=0 表示纵向计算

axis=1 表示横向计算

默认不写 表示计算整个数组

(1)、求和:sum

2b929df978f5fba807f4a237064b38e4.png

(2)、求平均值:mean

c1669589def48fdbf74b5d29227fec1e.png

(3)、求最大值:max

77373ed1483fac8a74c256c16487a01f.png

(4)、求最小值:min

50ce57df92d69f7632a1542e72ccd9d8.png

(5)、求最大元素的索引:argmax

c2c539773f4b3e2c0e6db1dc895ea6ad.png

(6)、求最小元素的索引:argmin

207ac999f566585ee103e21dbeb4e2b9.png

(7)、求方差:var

ae3a91ec35ea219b04b7988b11c81e5f.png

(8)、求标准差:std

fc204d2dcf3a8e4cf148ad7a893f7bcd.png

(9)、求所有元素的累计和:cumsum

5e9e207ce3816704a286795464f90bac.png

(10)、求所有元素的累计积:cumprod

f3231bbc76f348fae4d311b8f601174b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值