Liam
Liam

Reputation: 603

Construct 1 dimensional array from several data files

I'm trying to code a small Python script to do some data analysis. I have several data files, each one being a single column of data, I know how to import each one in python using numpy.loadtxt giving me back a ndarray. But I can't figure out how to concatenate these ndarrays, numpy.concatenate or numpy.append always giving me back error messages even if I try to flatten them first.

Are you aware of a solution?

Ok, as you were asking for code and data details. Here is what my data file look like:

1.4533423
1.3709900
1.7832323
...

Just a column of float numbers, I have no problem import a single file using:

data = numpy.loadtxt("data_filename")

My code trying to concatenate the arrays looks like that now (after trying numpy.concatenate and numpy.append I'm now trying numpy.insert ) :

data = numpy.zeros(0) #creating an empty first array that will be incremented by each file after
for filename in sys.argv[1:]:
    temp = numpy.loadtxt(filename)
    numpy.insert(data, numpy.arange(len(temp), temp))

I'm passing the filenames when running my script with:

./my_script.py ALL_THE_DATAFILES

And the error message I get is:

TypeError: only length-1 arrays can be converted to Python scalars

Upvotes: 0

Views: 70

Answers (1)

Thorsten Kranz
Thorsten Kranz

Reputation: 12755

numpy.concatenate will definitely be a valid choice - without sample data and sample code and corresponding error messages we cannot help further.

Alternatives would be numpy.r_, numpy.s_

EDIT

This code snippet:

import sys
import numpy as np
filenames = sys.argv[1:]
arrays = [np.loadtxt(filename) for filename in filenames]
final_array = np.concatenate(arrays, axis=0)

Upvotes: 4

Related Questions