新手第一次写博客外加刚开始学python,如果有不对的请多多指教
推荐使用工具,使用python的第三方软件
安装命令pip install notebook
启动notebook 网页式命令工具jupyter notebook
安装numpy第三方库pip install numpy
numpy 数学计算的库 (科学计算库)
为什么要用numpy?
对于数据,我多用于列表
来操作,我们要取里面的数据,每次都需要循环,非常的不方便;
numpy计算库解决多维列表的一些操作问题,有很多时候规避遍历问题;
备注:numpy所有数组操作基本上都不操作原数据
-
numpy.array(列表) 相当于把列表转成numpy数组ndarray(多维数组)
-
显示ndarray数组的数据类型号:dtype
-
显示列表的最大维度:ndim
-
显示列表中数据的个数:size
-
显示列表的维度详细情况:shape(显示出来的结果表征是一个元组,元组的每一项分别表示每个维度的元素情况)
-
显示列表中元素每一项的字节大小:itemsize
-
产生numpy数组元素的方法:
7.1 全为0的数组:numpy.zeros((5,)) 表示产生一维列表,列表里面有5个 0.
7.2 全为1的数组:numpy.ones((5,)) 表示产生一维列表,列表里面有5个 1.
7.3正方形的数组:numpy.eye(5,5) 对角为1,其余都为0,只对二维数组有效
对角类型是float型
7.4全是同一个值:numpy.full((2,3,4),10) 列表里面的值全是10
full类型根据后面数据类型决定了整个数组的类型
7.5产生随机的数组:numpy.empty((3,5))
7.6对角线不为1的数组:numpy.diag([2,3,4,5,6,7])
对角的类型是列表中数据的类型
备注:产生的数据的数据类型,跟后面的值有关系7.7随机值
numpy插件里面包含random,不需要再导入模块
7.7.1 numpy.random.random((2,3)) 产生2维随机数数组,只有正数,没有负数,数值在0-1之间
7.7.2 numpy.random.randn(4,5)正态分布(处理离散的点)
7.7.3 numpy.random.randint(3,10,(2,3)(开始值,结束值,数组的维度情况值(tuple))
7.8产生有序的序列
7.8.1 产生几到几之间的有序的序列:arange(1,13,2) 取步长
7.8.2 改变数组的维度:reshape(3,4) 对应里面的元素个数
7.8.3 改变数组的维度:resize(3,4) 覆盖原来的数据 -
数据的类型转换:数组名.astype(‘int64’) 注意:把dtype类型变化以后要进行一定覆盖
-
数据引用
9.1原始方法:下标 引用到具体的数据,几维就有几个下标
省略一个下标,得出的结果就会降一维
9.2切片方法:二个切片参数,用逗号隔开
数组[几维用,隔开几维,:左边和右边的元素]9.3整数索引方法:
arrp[[],[]]
里面,分开两个维度,表示二维,逗号前后都[],[],[]里面表示的是元素的下标9.4布尔索引方法:(有效的数据过滤)
单条件布尔:数组名字> or < 条件
复合条件:&(与) or |(或) -
数组的运算:
对应位置的加减
同时对这些数据进行共同的加减
两个数组相加,相同的位数会相加
+或者(numpy.add(1,2))
-或者(numpy.subtract(1,2))
*或者(numpy.multiply(1,2))
/或者(numpy.divide(1,2))
平方根numpy.sqrt(1) 开方
数组名**方的次数 乘方
numpy.sum() 求和
numpy.mean() 求平均数 完成不了加权
numpy.average() 求平均数 可以加权值平均
标准:broadcast广播机制:两个条件
(1)两个数组shape相同(2)某一项只有一个值
打印shape的值,对照shape的每一位,如果相等可以相加,其中一位为1也可以相加,其他都不行
11.维度的变换
transpose()数组作一个维度转换
思路:1.先把shape维度取出来,顺序是0,1,2
2.再看转换后的shape顺序,确定不同的shape维度有多少元素
3.对每个元素进行维度转换找规律备注:利用引用元素的规则arr[维度0][维度1][维度2]
对应的变换规则,把每个元素的转换也对应作变换,确定transpose的位置
二维维度转换:行专列 列转行(矩阵的转置,可以使用arr.T)
用于两个维度之间交换:swapaxes(1,2)
三维维度变换:
arr1=numpy.arange(16).reshape(4,4)
#改成三维数组
arr1.resize(2,2,4)
'''原来维度
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
'''
arr1.transpose(1,0,2)
'''变换维度后
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
'''
transpose变换维度(2,2,4)
arr[0][0][0]=0 [0][0][0] 0 1 2
arr[0][0][1]=1 1 0 2 把1和0调换位置0 1 2
2和3以此类推
0 1 2 3对这个数来说,把维度1和0调换,一样,都是0
arr[0][1][0]=4 变换维度后 arr[1][0][0]=4
arr[0][1][1]=5 变换维度后 arr[1][0][1]=5
transpose变换维度
原来的维度(2,2,4)
arr1.transpose(2,1,0)
变换后的维度(4,2,2)最外层4个元素,中间有2个元素,里面有2个元素
演示:
arr[0][0][0]=0
arr[0][0][1]=1 变换维度后 arr[1][0][0]=1
2,3以此类推
arr[0][1][0]=4 变换维度后 arr[0][1][0]=4
arr[0][1][1]=5 变换维度后 arr[1][1][0]=5
6,7以此类推
arr[1][0][0]=8 变换维度后 arr[0][0][1]=8
arr[1][0][1]=9 变换维度后 arr[1][0][1]=9
10,11以此类推
[[0,8],[4,12]],
[[1,9],[5,13]],
[[2,10],[6,14]],
[[3,11],[7,15]]
来源:CSDN
作者:du392587062
链接:https://blog.csdn.net/du392587062/article/details/103706313