Я работаю с кадром данных 100x3 строк в numpy, но этот вопрос касается одного столбца, поэтому серия 100x1 pandas.
Я конвертирую его в массив шахматных досок 100x8x8x1 с этим function:
def boardToNPArray(x):
x = chess.Board(x)
x=x.__str__()
x = x.split("\n")
for n in range(len(x)):
x[n] = np.array(x[n].split()).reshape(8,1)
return np.array(x)
asdf['FEN'] = asdf['FEN'].apply(lambda x : boardToNPArray(x))
Что должно сделать его кадром данных длиной 100, содержащим шахматную доску numpy массивы 8x8x1.
Затем я выполняю значения asdf ['FEN']. для преобразования dataframe в массив numpy.
asdf['FEN'].values
# Which returns
array([array([[['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['.']],
[['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['.']],
[['.'],
['.'],
['.'],
['.'],
['.'],
['k'],
['.'],
['.']],
[['R'],
['.'],
['.'],
['.'],
['.'],
['.'],
['p'],
['.']],
[['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['P'],
['.']],
[['.'],
['.'],
['K'],
['.'],
['.'],
['.'],
['.'],
['.']],
[['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['.']],
[['.'],
['.'],
['.'],
['.'],
['.'],
['.'],
['r'],
['.']]], dtype='<U1'),
# This is one 8x8x1 entry in the
Теоретически это должно привести к моей цели - массиву 100x8x8x1 numpy. Тем не менее, при запуске
asdf['FEN'].shape
он возвращает
(100,)
А при запуске
asdf['FEN'][0].shape
он возвращает
(8,8,1)
И введите ( ) обоих - это numpy .ndarray Почему это не массив 100x8x8x1?