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