数据分析——numpy(二)

本文详细介绍了numpy库在数据分析中的应用,包括常数运算、数组的相同和不同维度计算,遵循广播原则。还讨论了轴的概念,以及如何使用numpy读取CSV数据。此外,文章讲解了数组转置的多种方法,并深入探讨了numpy数组的索引和切片操作,如取行、取列、取值和交叉点选取。

numpy

numpy的计算

常数

当我们的数组加(减、乘、除)一个常数是,数组内全部元素均加(减、乘、除)该常数。
(ps:允许除零,在numpy中零被看做是一个很小的值)
在这里插入图片描述

数组
相同维度

相同维度的两个数组相加(减、乘、除)时,对应位置的元素分别相加(减、乘、除)。
在这里插入图片描述

不同维度

广播原则:
如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
例:
shape为(3,3,3)的数组不能和(3,2)的数组进行计算
shape为(3,3,2)的数组能和(3,2)的数组进行计算
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在numpy中可以理解为方向,使用0,1,2…数字表示,对于一个一维数组,只有一个0轴,对于2维数组,有0轴和1轴,对于三维数组,有0,1,2轴
在这里插入图片描述

numpy读取数据

我们通常让numpy从CSV中读数据
CSV:Comma—Separated Value,逗号分隔值文件
显示:表格状态
源文件:换行和逗号分隔行列的格式化文本,每一行的数据表示一条记录
读取文件的方法

import numpy as np
np.loadtxt(fname,dtype=np.float,delimiter=None,skiprow=0,usecols=None,unpack=False)#从文本文件读取内容
参数解释
fname文件、字符串或产生器,可以是.gz或bz2压缩文件
dtype数据类型,可选,CSV的字符串以什么数据类型读入数组中,默认 np.float
delimiter分隔字符串,默认是任何空格,改为逗号
skiprows跳过前x行,一般跳过第一行表头
usecols读取指定的列,索引,元组类型
unpack如果True,读入属性将分别写入不同数组变量,False读入数据只写入一个数组变量,默认False

简单语法

import numpy as np
file_path="文件路径"
t = np.loadtxt(file_path,dtype=np.float,delimiter=None,skiprow=0,usecols=None,unpack=False)
print(t)

数组转置

数组转置有三种较为简便的方法(np.arange(24).reshape((4,6))为例)
语法1

import numpy as np
t=np.arange(24).reshape((4,6))
t.transpose()
#交换

语法2

import numpy as np
t=np.arange(24).reshape((4,6))
t.T
#数学转置

语法3

import numpy as np
t=np.arange(24).reshape((4,6))
t.swapaxes(1,0)
#交换轴,括号内需要轴对应的参数

在这里插入图片描述
在这里插入图片描述

numpy索引和切片

在学习索引和切片前,先引入一个矩阵(4*6)当作例子

import numpy as np
t=np.array(range(24)).reshape((4,6))
取行

**取行后的到的数据类型仍为 numpy.ndarray
**

单行

t[i]#i为要取出的行序(0为首行)

在这里插入图片描述

连续的多行

t[i:]#i为要取出的行序(0为首行),结果为从第i+1行及以后所有行,:左边为下限不包含

在这里插入图片描述

不连续的多行

t[i]
#i为一个列表,列表中存放的是所要取得行序(首行为0)

t[[0,1,3]]

在这里插入图片描述

取行/列/值
t[a,b]
#a为行参数,b为列参数
#参数形式与上述取行所用形式类似

单取行

t[a]#取行
t[a,:]#单取a+1行,:表示列全选,:左边为下限不包含
t[a:,:]#取a+1行及以后所有行,:表示列全选,:左边为下限不包含
t[a:,:]#a为列表,取列表中的行,:表示列全选,:左边为下限不包含

单取列

t[:,b]#单取b+1行,:表示行全选,:左边为下限不包含
t[:,b:]#取b+1行及以后所有行,:表示行全选,:左边为下限不包含
t[:,b]#b为列表,取列表中的列,:表示列全选,:左边为下限不包含

在这里插入图片描述

取值

t[a,b]#a,b分别为行序,列序(首序为0)

取出值的数据类型并非python数据类型,仍为numpy中的数据类型
在这里插入图片描述

取点(交叉点)
t[a:b,c:d]
#取a+1行到b行与c+1列到d列的交叉点

t=np.array(range(54)).reshape((6,9))为例
在这里插入图片描述

t[a,c]
#当a,c为列表时,不是取对应行列的交叉点,而是对应位置为所取点的行列,所以要求a,c列表长度一致
t[[0,1,2,3],[0,1,2,3]]
#取点对应位置(0,0),(1,1),(2,2),(3,3)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值