Dear all,
I am trying to add a column to a numpy matrix. I can make a running example as follows:
The data I got comes from a Pandas dataframe which I converted to numpy with .to_numpy, but then:
This is also the case for stack, vstack, concatenate(axis=0,1,2). Nevertheless, all these objects are numpy arrays:
What am I missing? Why
Thank you
I am trying to add a column to a numpy matrix. I can make a running example as follows:
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np X = np.random.uniform(size = ( 10 , 3 )) X.shape Out[ 3 ]: ( 10 , 3 ) n,m = X.shape X0 = np.ones((n, 1 )) X0.shape Out[ 6 ]: ( 10 , 1 ) Xnew = np.hstack((X,X0)) Xnew.shape Out[ 8 ]: ( 10 , 4 ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import pandas as pd df = pd.read_csv( "Data.tsv" , delimiter = '\t' ) X = df[[ 'mr' , 'fcn' , 'weight' ]] x = X.to_numpy() S = df[[ 'serial' ]] sa = S.to_numpy() s = sa.ravel() x.shape Out[ 14 ]: ( 15744 , 3 ) s.shape Out[ 15 ]: ( 15744 ,) z = np.hstack((x, s)) Traceback (most recent call last): File "<ipython-input-16-c88a113c6e49>" , line 1 , in <module> z = np.hstack((x, s)) File "/home/gigiux/.local/lib/python3.6/site-packages/numpy/core/shape_base.py" , line 340 , in hstack return _nx.concatenate(arrs, 1 ) ValueError: all the input arrays must have same number of dimensions |
1 2 3 4 5 6 7 8 9 10 |
type (X) Out[ 6 ]: numpy.ndarray type (X0) Out[ 7 ]: numpy.ndarray type (Xnew) Out[ 8 ]: numpy.ndarray type (x) Out[ 2 ]: numpy.ndarray type (s) Out[ 4 ]: numpy.ndarray |
X0
has two dimensions (10, 1) but s
has only one (15744)? Is that the problem?Thank you