Обнаруживает ли .shape в массиве numpy вложенные массивы или вложенные списки? - PullRequest
0 голосов
/ 02 августа 2020

Я работаю с кадром данных 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?

1 Ответ

0 голосов
/ 02 августа 2020

Попробуйте применить numpy.stack к результату Series.values:

s = pd.Series(map(np.array,map(list,['asdf','qwer'])))
np.stack(s.values).shape # (2,4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...