1

Apologies if this is super noob, but I've tried searching all over StackOverflow and cannot find out how to import an array from a text file to a numpy array when there are "[" or "[[" chars already present.

Context: I saved system log output to a text file, and I've tried using np.genfromtxt() and np.loadtxt(). Also, the arrays are actually highly structured, (they are always 10 columns, but my resulting text file splits apart a single row of 10 columns into one row of, say 6, and another of 4 columns. I was wondering if there was already a built in way to read this data without having to declare "start new row" at "[" and end row at "]".

[[  2.16089589e-07  -2.41978796e-07   5.81936831e-07   2.67195929e-07
1.41540781e-07  -2.39142167e-07   2.11576619e-07   2.70369611e-07
3.11488321e-07   1.41789783e-07]

[ -3.81266403e-07 -2.30981200e-07 -7.07703123e-08 -9.66262661e-08 -3.73168461e-07 -2.65608435e-07 -2.38021940e-07 3.23960222e-07 -1.73911175e-07 -4.02730223e-07]]

CodeinCafes
  • 107
  • 1
  • 1
  • 8
  • Those readers work with a `csv` - columns of numbers separated by some well define delimiter. Extraneous characters like these [] mess up that simple reading. – hpaulj Mar 02 '18 at 20:49

1 Answers1

1
from numpy import array   

with open("your_file.txt", "r") as myFile: ## Open (and close) your file

    arr = ""
    for line in myFile:
        arr += line.replace("\n", "") ## Replace each newline character in each line so that arr is just one long continuous string
    arr = " ".join(arr.split()) ## Replace multiple whitespace with single spaces
    arr = arr.replace(" ", ",") ## Replace the spaces with commas (so that it can be interpreted as a list
    arr = eval(arr) ## The text will now be stored as a list
    arr = array( arr ) ## Now it's a numpy array (hopefully)
Adi219
  • 4,712
  • 2
  • 20
  • 43