Неожиданная форма для столбца Pandas массива np - PullRequest
0 голосов
/ 19 марта 2019

У моего dataframe есть два столбца (l_cats и r_cats) типа np array. Вот пример данных

l_name,l_cats,l_gh,r_name,r_cats,r_gh,score
piggly wiggly,1|2|4|0|0,1,piggly wiggly,1|2|4|3|0,1,1
piggly wiggly,1|2|4|0|0,1,piggly wiggly,1|2|4|3|0,1,1
piggly wiggly,1|2|4|0|0,1,piggly wiggly,1|2|4|3|0,1,1
piggly wiggly,1|2|4|0|0,1,piggly wiggly,1|2|4|3|0,1,1
.................
.................
<79 rows>

Ниже показано, как я читаю данные в эти два столбца

 data = pd.read_csv(self.path, converters={'l_cats': lambda x: np.array([y for y in x.split('|')]),
                                                  'r_cats': lambda x: np.array([y for y in x.split('|')])})
flat = data['l_cats'].values
print(str(flat.shape))
# Output: (79,)
print(str(flat[0].shape))
# Output: (5,)
print(str(type(flat[0])))
# Output: <class 'numpy.ndarray'>

Разве результат print(str(flat.shape)) не должен быть (79, 5)?

1 Ответ

0 голосов
/ 19 марта 2019

Нет, не должно.
Если вы просто делаете print(flat), вы должны понять, почему. Это flat:

[array(['1', '2', '4', '0', '0'], dtype='<U1')
 array(['1', '2', '4', '0', '0'], dtype='<U1')
 array(['1', '2', '4', '0', '0'], dtype='<U1')
 array(['1', '2', '4', '0', '0'], dtype='<U1')]

Как видите, это не двумерная матрица, а одномерный массив или одномерные массивы. Чтобы преобразовать его в 2D-матрицу, вы можете сделать:

mtx = np.stack(flat)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...