我正在使用 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 数组?
繁星淼淼
相关分类