我正在使用 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 returnsarray([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 数组?
1 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
尝试应用于numpy.stack
以下结果Series.values
:
s = pd.Series(map(np.array,map(list,['asdf','qwer']))) np.stack(s.values).shape # (2,4)
添加回答
举报
0/150
提交
取消