Python中提取二维数组第2、3列的技术问题问询(附代码)
提取二维数组第2、3列的解决方案
嘿,我懂你想要从读取的CSV数据里生成只包含第2、3列的新二维数组对吧?咱们一步步来搞定这个问题~
先修正读取数据的小问题
你代码里先用了csv.reader(response),又调用np.genfromtxt(response),但HTTP响应对象只能被读取一次,所以直接用np.genfromtxt处理就够了,不用重复调用。
两种提取列的实用方法
方法1:读取时直接指定目标列(更高效)
在np.genfromtxt里用usecols参数,直接指定你要的列索引(注意numpy的索引从0开始,所以第2列对应索引1,第3列对应索引2):
#!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np import urllib2 url2 = 'https://api.bmreports.com/BMRS/FUELINSTHHCUR/v1?APIKey=66ky5jo5p5w0vbd&ServiceType=CSV' response = urllib2.urlopen(url2) # 直接读取第2、3列(索引1和2),跳过表头行 arr = np.genfromtxt(response, delimiter=",", skip_header=1, usecols=(1, 2))
方法2:读取完整数组后再筛选列
如果已经读取了完整的二维数组,用numpy的切片语法就能轻松提取目标列:
# 假设已经读取了完整的数组arr new_arr = arr[:, [1, 2]] # 解释:[:, [1,2]] 表示取所有行(:),以及索引为1和2的列(对应原数组第2、3列)
补充小提示
- 如果你原来的
skip_foot...是想跳过末尾的行,记得补全参数,比如skip_footer=1(根据实际需要调整数字)。 - 要是不确定列的索引,可以先打印
arr.shape看看数组的行列数,或者打印前几行确认列的位置。
内容的提问来源于stack exchange,提问作者adam Wadsworth
相关产品推荐
相关产品推荐

