numpy 读取本地数据和索引

目录

一. numpy 轴axis

二、numpy读取数据

 三、numpy索引和切片

四、numpy中数值的修改


一. numpy 轴axis

概述: 轴在numpy中可以理解为方向,使用 0,1,2...数字表示。

  • 对于一个一维数组, 只有一个0轴(行);
  • 对于二维数组shape(2,3), 有一个0轴(行)和1轴(列);
  • 对于一个三维数组shape(2,3,4), 有一个0轴(块),1轴(行),2轴(列)。

图解:

二、numpy读取数据

格式: np.loadtxt(frame, dtype = np.flaot, delimiter=None, skiprows = 0, usecols=None, unpack=None)

参数解释
frame文件、字符串或产生器, 可以时.gz或bz2压缩文件(传入文件路径)
dtype数据类型,可选, CSV的字符串默认是以np.float数据类型读入数组中
delimiter分隔字符串,默认是任何空格
skiprows跳过前x行,一般跳过第一行的表头
usecols读取指定的列,索引,元组类型
unpack

如果是True,读入属性将被分别写入不同数组变量,False读入数据只写入一个数组变量, 默认是False。(大白话: 转置。)

 演示1: 当读取CSV文件,只写文件名会会报错.

# 1.当不写 delimiter时会报错,因为CSV(Comma-Separated Values)是以逗号分隔值的文件
t1 = np.loadtxt('./numpy读取数据.csv')
print(t1)
# 此代码会报错

演示2: 当读取CSV文件, 需要添加逗号分隔符, 并且将标题行跳过.

# 2.获取文件, 用逗号做分隔符(delimiter), 并跳过标题行(skiprows)
t2 = np.loadtxt('./numpy读取数据.csv',delimiter=',',skiprows=1)
print(t2)

# csv文件类型默认是float64
print(t2.dtype)

演示3:将文件的行列转换(unpack)

# 3.将文件的行列转换(unpack)
t3 = np.loadtxt('./numpy读取数据.csv',delimiter=',',skiprows=1, unpack=True)
print(t3)

 拓展: numpy中的转置其他实现方式:

  1. ndarray.transpose()
  2. ndarray.T
  3. ndarray.swapaxes(1,0)       # 行列交换轴

三、numpy索引和切片

1. 获取行

格式:

  1. 取一行:写对应行的索引. 例如: ndarray[2]
  2. 取连续的多行:切片索引.  例如: ndarray[2: ]
  3. 取不连续的多行:  需要两个方括号, 添加需要获取的行索引.  例如: ndarray[[2, 4, 8]]
  4. 通用取行方式:   格式  ndarray[行, 列]. 其中冒号表示所有.   例如: ndarray[2, :] , ndarray[2: , : ] ,  ndarray[[2, 4, 8], :]
# 创建一个3行6列的二维数组
t = np.arange(18).reshape((3,6))
print(t)
print('-' * 31)
# 1. 获取第三行
print(t[2])
print('-' * 31)
# 2. 获取第二行及以后的数据
print(t[1:])
print('-' * 31)
# 3. 获取第1行和第3行的数据
print(t[[0,2],:])

2. 获取列

格式:

  1. 取一列  : ndarray[: , 2]
  2. 取连续的多列  : ndarray[: , 2:]
  3. 取不连续的列  : ndarray[: , [2, 4, 8]]
  4. 取多行多列  : ndarray[[2:5] , [3:7]]
  5. 取单个点(取的是行和列交叉点位置的数)  : ndarray[2 , 3]
  6. 取多个不相邻的点  :  ndarray[[2,5,8] , [3,7,9]]

四、numpy中数值的修改

拓展:

  1. numpy的三元运算:  where(判断条件, 成立则执行, 不成立则执行).
  2. numpy中的裁剪  cilp(a, a_min, a_max, out=None, **kwargs), 用于用于保留数组中在间隔范围内的值.
  • a:要被剪裁的NumPy数组
  • a_min: 是最小值,可以是数值,NumPy数组或者空值None
  • a_max: 是最最大值,可以是数值,NumPy数组或者空值None。最大值和最小值最多只有一个可以为空值None。如果a_min或者a_max是数组那么其维度必须与a相同。
  • out:数组,默认为None。结果将放置在此数组中。可以为输入阵列。out必须具有正确的维度才能保存输出
# 创建一个3行6列的二维数组
t = np.arange(18).reshape((3,6))
print(t)
print('-' * 31)
# 将第3列和第4的值赋为0
t[:,2:4] =0
print(t)

# 把t中小于10 的值替换成3, bool的方式
t[t<10] = 3
print(t)

# # 可以利用numpy的三元运算符: where(条件, 成立则执行,否则执行), 把小于10 的替换为0 , 大于10的替换为20
print(np.where(t < 10, 0, 20))
print('-' * 31)
# 可以利用中的clip(裁剪)操作:  把小于10 的替换为0 , 大于15的替换为15
print(np.clip(t, 10, 15))

 注意:  数值修改 无法对nan值起效. 若要修改nan值, 需要现将ndarray转为float( 格式: t.astype(float)), 再对其进行修改.

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值