请我有点新鲜Python,它一直很好,我可以评论说python是非常性感的,直到我需要移动4x4矩阵的内容,我想用于构建游戏的2048游戏演示在这里我有这个功能
def cover_left(matrix):
new=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
for i in range(4):
count=0
for j in range(4):
if mat[i][j]!=0:
new[i][count]=mat[i][j]
count+=1
return new
Run Code Online (Sandbox Code Playgroud)
如果你像这样调用它,这就是这个函数的作用
cover_left([
[1,0,2,0],
[3,0,4,0],
[5,0,6,0],
[0,7,0,8]
])
Run Code Online (Sandbox Code Playgroud)
它会覆盖左边的零并产生
[ [1, 2, 0, 0],
[3, 4, 0, 0],
[5, 6, 0, 0],
[7, 8, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
我需要有人帮助我numpy做一个这样做的方法,我相信会更快,需要更少的代码(我在深度优先搜索算法中使用),更重要的是实现cover_up,cover_down和
`cover_left`.
`cover_up`
[ [1, 7, 2, 8],
[3, 0, 4, 0],
[5, 0, 6, 0],
[0, 0, 0, 0]]
`cover_down`
[ [0, 0, 0, 0], …Run Code Online (Sandbox Code Playgroud) 我有一个 Pandas Dataframe,每行至少有 4 个非 NaN 值,但位于不同的列:
Index Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8
1991-12-31 100.000 100.000 100.000 89.123 NaN NaN NaN NaN
1992-01-31 98.300 101.530 100.000 NaN 92.342 NaN NaN NaN
1992-02-29 NaN 100.230 98.713 97.602 NaN NaN NaN NaN
1992-03-31 NaN NaN 102.060 93.473 98.123 NaN NaN NaN
1992-04-30 NaN 102.205 107.755 94.529 94.529 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
(我只显示前 8 列)我想将其转换为每行 4 列的数据框。这些行应仅包含该日期的前四个(从左到右读取)非 NaN 值。
每行的顺序很重要。
如何忽略数据帧内随机分布在数据帧中的空单元格?这是我所拥有的一个例子
ColA ColB ColC ColD ColF ColG ColH
A b D
W R D
J H T
Q A O
Run Code Online (Sandbox Code Playgroud)
每行总共有3个条目,但空单元格是随机的.我看了这里,但由于我的数据随机性,它没有帮助
我期待的输出是:
ColA_New ColB_New ColC_New
A b D
W R D
J H T
Q A O
Run Code Online (Sandbox Code Playgroud)