我正在使用 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
提交
取消