I read from a file with loadtxt like this
data = loadtxt(filename) # id x1 y1 x2 y2
data could look like
array([[ 4. , 104.442848, -130.422137, 104.442848, 130.422137],
[ 5. , 1. , 2. , 3. , 4. ]])
I can then reduce data to the lines belonging to some id number:
d = data [ data[:,0] == id]
The problem here is when the data contain only one line.
So my question is how to check the 2-dimensionality of my array data?
I tried checking
data.shape[0] # num of lines
but for one-liners I get something like (n, ), so this will not work.
Any ideas how to do this correctly?
data.ndim gives the dimension (what numpy calls the number of axes) of the array.
As you already have observed, when a data file only has one line, np.loadtxt
returns a 1D-array. When the data file has more than one line, np.loadtxt
returns a 2D-array.
The easiest way to ensure data is 2D is to pass ndmin=2 to loadtxt:
data = np.loadtxt(filename, ndmin=2)
The ndmin parameter was added in NumPy version 1.6.0. For older versions,
you could use np.atleast_2d:
data = np.atleast_2d(np.loadtxt(filename))
You can always check the dimension of your array with len(array) function.
Example1:
data = [[1,2],[3,4]]
if len(data) == 1:
print('1-D array')
if len(data) == 2:
print('2-D array')
if len(data) == 3:
print('3-D array')
Output:
2-D array
And if your array is a Numpy array you can check dimension with len(array.shape).
Example2:
import Numpy as np
data = np.asarray([[1,2],[3,4]])
if len(data.shape) == 1:
print('1-D array')
if len(data.shape) == 2:
print('2-D array')
if len(data.shape) == 3:
print('3-D array')
Output:
2-D array
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With