请我有点新鲜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) 我有一个像numpy数组
np.array([[1.0, np.nan, 5.0, 1, True, True, np.nan, True],
[np.nan, 4.0, 7.0, 2, True, np.nan, False, True],
[2.0, 5.0, np.nan, 3, False, False, True, np.nan]], dtype=object)
Run Code Online (Sandbox Code Playgroud)
现在我想用key作为isnan对值进行排序?我怎样才能做到这一点?所以我最终会在阵列中
np.array([[1.0, 5.0, 1, True, True, True, np.nan, np.nan],
[4.0, 7.0, 2, True, False, True, np.nan, np.nan],
[2.0, 5.0, 3, False, False, True, np.nan, np.nan]], dtype=object)
Run Code Online (Sandbox Code Playgroud)
np.sort()没用.在pandas中可以实现相同的sorted功能,通过使用带有键的函数的已排序列作为pd.isnull(),但寻找速度的numpy答案.
在熊猫里
data = pd.DataFrame({'Key': [1, 2, 3], 'Var': [True, True, False], 'ID_1':[1, np.NaN, 2],
'Var_1': [True, np.NaN, False], 'ID_2': [np.NaN, 4, 5], 'Var_2': [np.NaN, …Run Code Online (Sandbox Code Playgroud)