这看起来像一个结构化数组,很可能是通过从csv(使用np.genfromtxt)读取数据创建的。如果是这样,它可能是一维的,带有复杂的dtype。假设第一个字段称为“日期”,那么您可以获得所有日期的数组
myData['Date']
第一行的数据是
myData[0]
第一个日期将是 myData[0]['Date'] 或 myData['Date'][0]。
如我所料,这是一个一维结构化数组:
shape = (128,)
type = [('Date', 'O'), ('SF1.AAPL_DEBT_MRQ - Value', '<f8'), ....)]
'O' 表示日期是一个对象,可以是任何东西,所以我不能说它的格式或内容。
试试:
li = [date.year>2005 for date in myData['Date']
这至少应该使索引正确。我猜每个“日期”都有一个“年份”属性,可以与“2005”进行比较。这应该给出一个 128 长的 True/False 列表。
尝试使用:
myData[li]
只获取符合条件的行。您可能必须将li 转换为数组或索引号列表。但无论如何,myData 将始终使用一个值或列表进行索引。 too many indices 错误意味着当它实际上只是 1d 时,您将其视为 2d 数组。
gboffi 的数据可以读取,带有字段名,如
data = np.genfromtxt('puff.csv', dtype=None, delimiter=',', names=True)
生成的dtype
dtype([('date', 'S10'), ('pippo', '<f8'), ('pluto', '<f8'), ('paperino', '<f8')])
可以通过以下方式找到所需的行:
I=[x[:4]<'2014' for x in data['date']]
# the 'date' field can be selected before or after element selection
# [True, True, True, False]
data[np.array(I)]
numpy 具有可用于比较的datetime64 类型:
dates=[np.datetime64(x) for x in data['date']]
I = dates<np.datetime64('2014-01-01')
# array([ True, True, True, False], dtype=bool)
data[I]
如果日期格式正确,genfromtxt 可以进行字符串到日期的转换:
In [206]: data = np.genfromtxt(txt, dtype=('datetime64[D]','f8','f8','f8'), delimiter=',', names=True)
In [207]: data
Out[207]:
array([(datetime.date(2012, 10, 20), 3.0, 5.0, 6.0),
(datetime.date(2013, 5, 22), 4.0, 6.0, 2.0),
(datetime.date(2013, 7, 31), 5.0, 1.0, 6.0),
(datetime.date(2014, 10, 8), 0.0, 3.0, 4.0)],
dtype=[('date', '<M8[D]'), ('pippo', '<f8'), ('pluto', '<f8'), ('paperino', '<f8')])
可以通过以下方式选择年份:
In [208]: data[data['date']<np.datetime64('2014','Y')]
Out[208]:
array([(datetime.date(2012, 10, 20), 3.0, 5.0, 6.0),
(datetime.date(2013, 5, 22), 4.0, 6.0, 2.0),
(datetime.date(2013, 7, 31), 5.0, 1.0, 6.0)],
dtype=[('date', '<M8[D]'), ('pippo', '<f8'), ('pluto', '<f8'), ('paperino', '<f8')])
甚至是日期选择:
In [209]: data[data['date']<np.datetime64('2013-06-01','D')]
Out[209]:
array([(datetime.date(2012, 10, 20), 3.0, 5.0, 6.0),
(datetime.date(2013, 5, 22), 4.0, 6.0, 2.0)],
dtype=[('date', '<M8[D]'), ('pippo', '<f8'), ('pluto', '<f8'), ('paperino', '<f8')])