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)


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

被折叠的 条评论
为什么被折叠?



