numpy 数组上的 .shape 是否检测嵌套数组或嵌套列表?

我正在使用 numpy 中的 100x3 字符串数据框,但这个问题涉及一列,因此是一个 100x1 的 pandas 系列。


我使用此函数将其转换为 100x8x8x1 的棋盘阵列:


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 的数据帧,其中包含 8x8x1 的棋盘 numpy 数组。


然后我执行 asdf['FEN'].values 将数据帧转换为 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)

两者的 type() 都是 numpy.ndarray 为什么这不是 100x8x8x1 数组?


MMMHUHU
浏览 123回答 1
1回答

繁星淼淼

尝试应用于numpy.stack以下结果Series.values:s&nbsp;=&nbsp;pd.Series(map(np.array,map(list,['asdf','qwer']))) np.stack(s.values).shape&nbsp;#&nbsp;(2,4)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python