2017-07-18 11 views
0

Ich versuche, eine textfile in ein numpy Array zu laden.Lese Textdatei in numpy Array

Die Struktur ist der folgende:

THE 77534223 
AND 30997177 
ING 30679488 
ENT 17902107 
ION 17769261 
HER 15277018 
FOR 14686159 
THA 14222073 
NTH 14115952 
[...] 

aber ich kann nicht unter Verwendung von

import numpy as np 

data = np.genfromtxt("english_trigrams.txt", dtype=(str,int), delimiter=' ')             
print(data) 

[['TH' '77'] 
['AN' '30'] 
['IN' '30'] 
..., 
['JX' '1'] 
['JQ' '1'] 
['JQ' '1']] 

I ein möge (x, 2) Array mit DTYPE str in der ersten Spalte und DTYPE int in den zweiten .

Vielen Dank!


P. S .:

  • Python 3.6.1
  • NumPy 1.13.0
+0

vielleicht versuchen np.loadtxt –

+2

Mögliches Duplikat von [Wie numpy verwenden. genfromtxt, wenn die erste Spalte eine Zeichenfolge ist und die restlichen Spalten Zahlen sind?] (https://stackoverflow.com/questions/12319969/how-to-use-numpy-genfromtxt-when-first-column-is-string-and-the -Rema Ining-Spalte) –

+1

'np.loadtxt (" english_trigrams.txt ", dtype = [('f0', '| S3'), ('f1', '

Antwort

0

Verschiedene Möglichkeiten zum Laden dieser Text

In [470]: txt=b"""THE 77534223 
    ...: AND 30997177 
    ...: ING 30679488 
    ...: ENT 17902107 
    ...: ION 17769261 
    ...: HER 15277018 
    ...: FOR 14686159 
    ...: THA 14222073 
    ...: NTH 14115952""" 

Lassen genfromtxt die richtige Spalte dtype ableiten

In [471]: data = np.genfromtxt(txt.splitlines(),dtype=None) 
In [472]: data 
Out[472]: 
array([(b'THE', 77534223), (b'AND', 30997177), (b'ING', 30679488), 
     (b'ENT', 17902107), (b'ION', 17769261), (b'HER', 15277018), 
     (b'FOR', 14686159), (b'THA', 14222073), (b'NTH', 14115952)], 
     dtype=[('f0', 'S3'), ('f1', '<i4')]) 

Nicht das richtige dtype Spezifikation; wie deine, aber mit nur 1 Char pro Element.

In [473]: data = np.genfromtxt(txt.splitlines(),dtype=(str, int)) 
In [474]: data 
Out[474]: 
array([['T', '7'], 
     ['A', '3'], 
     ['I', '3'], 
     ['E', '1'], 
     ['I', '1'], 
     ['H', '1'], 
     ['F', '1'], 
     ['T', '1'], 
     ['N', '1']], 
     dtype='<U1') 

Ein wenig besser - aber die Saiten sind zu kurz

In [475]: data = np.genfromtxt(txt.splitlines(),dtype='str,int') 
In [476]: data 
Out[476]: 
array([('', 77534223), ('', 30997177), ('', 30679488), ('', 17902107), 
     ('', 17769261), ('', 15277018), ('', 14686159), ('', 14222073), 
     ('', 14115952)], 
     dtype=[('f0', '<U'), ('f1', '<i4')]) 

ähnlich den dtype=None Fall

In [477]: data = np.genfromtxt(txt.splitlines(),dtype='U10,int') 
In [478]: data 
Out[478]: 
array([('THE', 77534223), ('AND', 30997177), ('ING', 30679488), 
     ('ENT', 17902107), ('ION', 17769261), ('HER', 15277018), 
     ('FOR', 14686159), ('THA', 14222073), ('NTH', 14115952)], 
     dtype=[('f0', '<U10'), ('f1', '<i4')])