I have a numpy array arr1
which it an output of a function. The array has an "extra" dimension caused by each element inside the numpy array being cast as a numpy array itself.
arr1.shape
outputs (100, 20, 1)
If I print the array, print(arr1[0])
outputs
array([[-212537.61715316],
[ 7258.38476409],
[ 37051.91250884],
[-146278.00512207],
[-185792.24620168],
[-200794.59538468],
[-195981.27879612],
[-177912.26034464],
[-152212.805867 ],
[-118873.26452198],
[ -64657.64682999],
[ 306884.11196766],
[-191073.9891907 ],
[-104992.44840277],
[ -67834.43041102],
[ -21810.77063542],
[ 17307.24511071],
[ 55607.49775471],
[ 91259.82533592],
[ 119207.40589797]])
If I reshape with arr1.reshape((100,20))
, I get the following output for print(arr1.reshape((100,20))[0])
:
array([-212537.61715316, 7258.38476409, 37051.91250884,
-146278.00512207, -185792.24620168, -200794.59538468,
-195981.27879612, -177912.26034464, -152212.805867 ,
-118873.26452198, -64657.64682999, 306884.11196766,
-191073.9891907 , -104992.44840277, -67834.43041102,
-21810.77063542, 17307.24511071, 55607.49775471,
91259.82533592, 119207.40589797])
My question is: how do I exclude this "extra" one, but retain the original shape of the array arr1
?
Is the best method to use .reshape()
? If not, what is the best way to do this?
You might be looking for numpy.squeeze
:
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.squeeze.html
a = np.arange(10*20).reshape((10, 20, 1))
print(a.shape)
# (10, 20, 1)
a = a.squeeze()
print(a.shape)
# (10, 20)
Note the other answer since your reshape
should have worked you were just looking at the output incorrectly.
You are using reshape
correctly.
arr2 = arr1.reshape((100,20))
The shape of this will be (100,20), the same as arr1
without the last dimension.
arr1[0]
has shape (20,1), and thus prints as a column.
arr2[0]
has shape (20,), and thus prints as a row(s) (count the brackets). You might not like the display, but the shape is correct.
squeeze
can also be used to take out the extra dimension, but the results will be same.
print(arr2[0][:,None])
should print as a column. It effectively adds that extra dimension back on prior to printing.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.