python连续选取numpy数组中的多行或多列数据

这篇博客介绍了如何在Python中使用numpy库来截取numpy数组中的连续多行数据,包括两种方法:将ndarray转为list再截取,以及直接使用ndarray的索引来截取指定行。博主分享了在keras中导入数据集时,如何选择性地读取前300行数据的实践经验。

2019,新的一年,第一次写博客,纪念一下。个人所有博客既是笔记,也是知识分享,如有错误还请指教。Thanks♪(・ω・)ノ
问题:
  最近学习keras使用numpy.loadtxt()导入数据集时,想只导入前面连续的300行。首先,考虑了使用读取文件的read()、readline()方法,但是最多只能够解决读取行的问题,不能够读取多列连续的值。
  故,还是回到numpy。网上很多都是截取某几行或某几列的数据。
解决方法:
方法一:
  使用numpy.load()读取为ndarray类型,再转为list类型,通过list[a:b]截取a到b行,再转为ndarray类型。

import numpy as np
a=np.loadtxt("csv.csv",dtype=int,delimiter=',')#加载数据为ndarray
b=list(a)    #转为list
c=b[1:5]     #提取1至5行
d=np.array(c)   #转为ndarray
print(type(a),type(b),type(c),type(d),a,b,c,d,sep="\n——")

方法二:(偶然发现,体会到。。。人生苦短我用python了。。。)
  使用ndarray[numpy.arange(a,b)],即可截取a到b行的数据。实际上,这只是将numpy截取的每行连在了一起。截取多列,只需要将该矩阵转置后截取即可,如:ndarray.T[numpy.range(a,b)]。需要注意行列转换的问题。

import numpy as np
a=np.loadtxt("csv.csv",dtype=int,delimiter=',')#加载数据为ndarray
b2=a[np.arange(1,5)]        #提取多行
print('np',b2)

b3=a.T[np.arange(1,5)]     #提取多列,先将矩阵a转置,再提取多行,即提取原矩阵多列
b4=b3.T                    #提取后再将b3转置为列,*重要*
print(b3,"\n---",b4)
#若要提取一个连续矩形区域的多行多列,可用先提取行为一个矩阵后,再提取列的方式
b5=a[np.arange(1,3),np.arange(1,3)]#注,提取的是(1,1)和(2,2)两个坐标点
print("b5",b5)

最后,祝自己,2019,新的一年,有新的征程!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值