我使用
从CSV文件中获取了NumPy记录ndarray
data = matplotlib.mlab.csv2rec('./data.csv', delimiter=b',')
数据集的结构如下:
date,a0,a1,a2,a3, b0, b1, b2, b3,[...], b9
2012-01-01, 1, 2, 3, 4,0.1,0.2,0.3,0.4,[...],0.9
我想从数组中选择(在SQL意义上)只有b0
到b9
的列,给出结构
b0, b1, b2, b3,[...], b9
0.1,0.2,0.3,0.4,[...],0.9
问题" How can I use numpy array indexing to select 2 columns out of a 2D array to select unique values from?"是类似的,但切片data[:,5:]
按照建议抛出IndexError: too many indices
一个记录数组。
答案 0 :(得分:1)
答案 1 :(得分:1)
我知道这个问题已经得到解答,但只是想记录下来,因为它是相关的 - 它是Extracting specific columns in numpy array和Select Rows from Numpy Rec Array之间的东西(但不是How to return a view of several columns in numpy structured array),这是我正在寻找一段时间的语法,我终于找到了它;让我们说这是数据:
import numpy as np
a = np.array([(1.5, 2.5, (1.0,2.0)), (3.,4.,(4.,5.)), (1.,3.,(2.,6.))],
dtype=[('x',float), ('y',float), ('value',float,(2,2))])
我想要像SQL SELECT x,value FROM a WHERE y>=3.0
这样的东西 - 也就是说,只按字段名称选择某些列;并且根据某些标准只有一些行;正确的语法是:
a[['x','value']][a['y']>=3.0]
# [(3.0, [[4.0, 5.0], [4.0, 5.0]]) (1.0, [[2.0, 6.0], [2.0, 6.0]])]
虽然a[a['y']>=3.0]
工作正常但请注意:
>>> print a[a['y']>=3.0]['x','value']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: setting an array element with a sequence.
...但是,如果添加额外的括号对,如a[a['y']>=3.0][['x','value']]
- 所有似乎都会再次起作用。
希望这有助于某人,
干杯!
答案 2 :(得分:0)
data[...,0:3]
会为您提供0到2列。
data[...,[0,2,3]]
会为您提供第0,2和3列。
问题是你有一个数组数组,而你引用的问题是关于2D数组,这略有不同。另见:Numpy Array Column Slicing Produces IndexError: invalid index Exception