数据分析基础操作学习---Numpy部分

Numpy---用来处理数值型的数据

1. 通过numpy创建数组

数组的创建:

import numpy as np
a = np.array([1,2,3,4,5])
b = np.array(range(1,6))
c = np.arange(1,6)

数组的类名:

In [1]: a = np.array([1,2,3,4,5])
In [2]: type(a)
Out[2]: numpy.ndarray

数据类型:

In [3]: a.dtype
Out[3]: type('int64')

创建时可以对数据类型进行指定:

t1 = np.array([1,2,3,4,5],dtype=float)
t2 = np.array([1,0,1,1,0],dtype=bool)

 还可以在创建之后对数据的类型进行修改。

用astype()方法:

t3 = t2.astype('int8')

 通过np.round()可以设置取小数的位数:

 2. 数组的形状

np.reshape()方法
np.flatten()方法

有返回值,不会改变原数组

3. 数组的计算

  • 与数字的计算操作---广播机制

当把数组与数字进行加和、相减、乘法、除法时,会对数组中的每一个数执行相同的操作。

t5 = np.array([[1,2,3],[4,5,6],[7,8,9]])
t6 = t5 + 2
print(t6)

 特例:除以0的时候

t7 = t5/0

 会报警,但不会报错,能正常运行,同时输出值有两种:inf nan

nan: 0/0     inf: num/0

  • 数组与数组的计算操作

相同shape的数组,进行对应位置数字运算

如果是不同shape的数组:会在维度相同的方向上进行运算(每一行或每一列进行运算),如果没有相同的维度,会报错。

数组的广播原则:

如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为他们时广播兼容的。广播会在缺失和(或)长度为1的维度上进行。

如:shape为(3,3,2)的数组和(3,2)的数组------不可以

       shape为(3,3,3)的数组和(3,2)的数组------可以

       shape为(3,3,3)的数组和(3,1)的数组------可以

具体的广播机制实现方式可以参考:NumPy中的广播机制 - 知乎 (zhihu.com)

4. 数组的结构

轴:

对于二维数组:0轴-->行   1轴-->列

对于三维数组:0轴-->块   1轴-->块里的行   2轴-->块里的列

5. numpy读取数据

import numpy as np
np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)

 frame : 路径,文件位置

dtype : 数据类型

delimiter : 分割字符串,默认为空格

skiprows : 跳过前x行   设置为0跳过第一行

usecols : 读取指定的列、索引,元组类型

unpack : 如果True,读入属性会分别写入不同数组变量,False读入数据只写入一个数据变量

unpack设置为True实际上起到的是将数组转置的效果

**其他实现数组转置的方法:

  • a.transpose()
  • a.T
  • a.swapaxes()

6. numpy的索引和切片

numpy取某特定行(列):

import numpy as np
t1 = np.arange(6)
##取第三行   % 第三列
p = t1[2,:]   %  p = t1[:,2]
##取第三行之后的所有连续行   %列
p = t1[2:,:]   %  p = t1[:,2:]
##取第三行后的五行   %列
p = t1[2:7,:]   % p = t1[:,2:7]
##取某几行    %列
p = t1[[2,7,10],:]  % p = t1[:,[2,7,10]]

##取某行某列
p = t1[2,4]

##取多行多列
p = t1[2:5,1:4]

##取多个不相邻的点
p = t1[[1,2,4],[0,1,3]] %%取出的是[1,0],[2,1],[4,3]三个点

布尔索引:通过判断的方法对numpy中的数据进行修改

import numpy as np
t2 =  np.arange(24).reshape(4,6)
t2[t2<10] = 3

## 首先,t2 < 10会返回一个与t2形状相同的numpy数组,数组元素为bool值
## 根据bool值为True或False对数据进行赋值

numpy中的三元运算符(关于numpy中where的使用):

np.where(t<10,0,10)
##有点类似于 t=0 if t<10 else 10

如果想实现功能为:数组中小于10的赋值为10,大于18的赋值为18,可以通过clip操作来完成

 注:这里的nan是一个浮点类型,如果想要给数组中的数赋值为nan的话,首先需要通过astype方法把数据类型转成float,否则将无法完成赋值

7. Numpy中的nan和常用方法

  1. 数组的拼接

vstack方法和hstack方法

vstack: verticl 竖直方向拼接

hstack: horizon 水平方向拼接

 

  1. numpy中的随机方法
  2. numpy中的nan和常用统计方法

什么时候会出现nan:数据有缺失的情况下或出现不合适的计算的时候

什么时候出现inf:正无穷和负无穷

属性:两个nan是不相等的

In [1]: np.nan == np.nan

Out[1]: False

In [2]: np.nan != np.nan

Out[2]: True

可以用来判断数组中nan的个数 

## np.count_nonzero()方法的使用

t2 = np.array([....])

##因为nan和nan是不相等的,所以会返回true,其他值则返回false
np.count_nonzero(t2!=t2)
np.isnan(t2)  

 常用的numpy统计函数

t.sum()
t.mean()
np.median()##中值
t.max()
t.min()
np.ptp()##极值,最大与最小的差
t.std()##标准差

##默认返回整个数组的统计结果,可以通过指定axis返回某一个轴上的结果
  • numpy中填充nan和YouTube数据的练习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值