course22 icon indicating copy to clipboard operation
course22 copied to clipboard

Notebook 5 "can't convert np.ndarray of type numpy.object_" TypeError

Open CaseyHaralson opened this issue 2 years ago • 3 comments
trafficstars

When running the 5th notebook "Linear Model and Neural Network From Scratch", there is a type error when trying to convert the dataframe to a tensor.

This code gives the error:

indep_cols = ['Age', 'SibSp', 'Parch', 'LogFare'] + added_cols

t_indep = tensor(df[indep_cols].values, dtype=torch.float)
t_indep

The error: TypeError: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.

I was able to get around the error by converting the values into a list, but that threw a warning that that method was very slow and to try using an np array. Changing the code to use a np array gives the original error so that didn't help.

What is the best way to do the conversion?

CaseyHaralson avatar Oct 01 '23 16:10 CaseyHaralson

Replace df[indep_cols].values with df[indep_cols].to_numpy(dtype=np.float32)

indep_cols = ['Age', 'SibSp', 'Parch', 'LogFare'] + added_cols
t_indep = tensor(df[indep_cols].to_numpy(dtype=np.float32), dtype=torch.float)
t_indep

This is the recommended way: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.values.html

mayco2070 avatar Nov 04 '23 07:11 mayco2070

Replace df[indep_cols].values with df[indep_cols].to_numpy(dtype=np.float32)

indep_cols = ['Age', 'SibSp', 'Parch', 'LogFare'] + added_cols
t_indep = tensor(df[indep_cols].to_numpy(dtype=np.float32), dtype=torch.float)
t_indep

This is the recommended way: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.values.html

Thanks! That worked

CaseyHaralson avatar Nov 04 '23 19:11 CaseyHaralson

FYI: the original code is working in kaggle and it is using panda with older version 1.3.5

s99100532 avatar Dec 20 '23 11:12 s99100532