以下に示すように、テキスト ファイルを numpy 配列にインポートしました。
data=np.genfromtxt(f,dtype=None,delimiter=',',names=None)
ここで、f には csv ファイルのパスが含まれています
現在、データには次のものが含まれています。
array([(534, 116.48482, 39.89821, '2008-02-03 00:00:49'),
(650, 116.4978, 39.98097, '2008-02-03 00:00:02'),
(675, 116.31873, 39.9374, '2008-02-03 00:00:04'),
(715, 116.70027, 40.16545, '2008-02-03 00:00:45'),
(2884, 116.67727, 39.88201, '2008-02-03 00:00:48'),
(3799, 116.29838, 40.04533, '2008-02-03 00:00:37'),
(4549, 116.48405, 39.91403, '2008-02-03 00:00:42'),
(4819, 116.42967, 39.93963, '2008-02-03 00:00:43')],
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '<f8'), ('f3', 'S19')])
列をスライスしようとすると、つまり、次を使用して最初または2番目の列を抽出します
data[:,0]
「インデックスが多すぎます」と表示されます。保管方法に原因があることがわかりました。すべての行は、リスト/配列ではなくタプルとして格納されています。反復を使用せずにスライスを実行できる「最も醜い」方法を使用することを考えました。それは、各行のタプルをリストに変換し、numpy 配列に戻すことです。このようなもの
data=np.asarray([list(i) for i in data])
しかし、上記の問題のために、各列のデータ型が失われています。各要素は、前者の場合に自動的に検出された整数または浮動小数ではなく、文字列として格納されます。
繰り返しを使用せずに列をスライスしたい場合、方法はありますか?