请我有点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
如果你这样调用它,这就是函数的作用
cover_left([
[1,0,2,0],
[3,0,4,0],
[5,0,6,0],
[0,7,0,8]
])
它将覆盖左侧的零并产生
[ [1, 2, 0, 0],
[3, 4, 0, 0],
[5, 6, 0, 0],
[7, 8, 0, 0]]
请让我帮助某人,以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],
[1, 0, 2, 0],
[3, 0, 4, 0],
[5, 7, 6, 8]]
`cover_right`
[ [0, 0, 1, 2],
[0, 0, 3, 4],
[0, 0, 5, 6],
[0, 0, 7, 8]]
这里有一个量化的方法,通过启发this other post
和推广到覆盖non-zeros
所有四个方向-
def justify(a, invalid_val=0, axis=1, side='left'):
"""
Justifies a 2D array
Parameters
----------
A : ndarray
Input array to be justified
axis : int
Axis along which justification is to be made
side : str
Direction of justification. It could be 'left', 'right', 'up', 'down'
It should be 'left' or 'right' for axis=1 and 'up' or 'down' for axis=0.
"""
if invalid_val is np.nan:
mask = ~np.isnan(a)
else:
mask = a!=invalid_val
justified_mask = np.sort(mask,axis=axis)
if (side=='up') | (side=='left'):
justified_mask = np.flip(justified_mask,axis=axis)
out = np.full(a.shape, invalid_val)
if axis==1:
out[justified_mask] = a[mask]
else:
out.T[justified_mask.T] = a.T[mask.T]
return out
样品运行
In [473]: a # input array
Out[473]:
array([[1, 0, 2, 0],
[3, 0, 4, 0],
[5, 0, 6, 0],
[6, 7, 0, 8]])
In [474]: justify(a, axis=0, side='up')
Out[474]:
array([[1, 7, 2, 8],
[3, 0, 4, 0],
[5, 0, 6, 0],
[6, 0, 0, 0]])
In [475]: justify(a, axis=0, side='down')
Out[475]:
array([[1, 0, 0, 0],
[3, 0, 2, 0],
[5, 0, 4, 0],
[6, 7, 6, 8]])
In [476]: justify(a, axis=1, side='left')
Out[476]:
array([[1, 2, 0, 0],
[3, 4, 0, 0],
[5, 6, 0, 0],
[6, 7, 8, 0]])
In [477]: justify(a, axis=1, side='right')
Out[477]:
array([[0, 0, 1, 2],
[0, 0, 3, 4],
[0, 0, 5, 6],
[0, 6, 7, 8]])
问题内容: 我在创建numpy数组的numpy数组时遇到问题。我将在一个循环中创建它: 所需结果: 实际结果: 可能吗?我不知道数组的最终尺寸,因此无法使用固定尺寸对其进行初始化。 问题答案: 永远不要在循环中追加数组:与基本的Python相比,这是NumPy非常不擅长的一项操作。这是因为您要对每个数据进行完整复制,这将花费您二次时间。 相反,只需将您的数组附加到Python列表中,并在最后进行转
问题内容: 如何按第n列对NumPy中的数组排序? 例如, 我想按第二列对行进行排序,以便返回: 问题答案: 对于“正确”的方式,请参见的关键字参数。 但是,你需要将数组视为具有字段的数组(结构化数组)。 如果你最初没有使用字段定义数组,那么“正确”的方法将非常丑陋。 作为一个简单的示例,对其进行排序并返回副本: 对其进行原位排序: 据我所知,确实是最优雅的方式… 此方法的唯一优点是,参数是用于排
本文向大家介绍对齐相关面试题,主要包含被问及对齐时的应答技巧和注意事项,需要的朋友参考一下 语音有很多帧向量,向量与模型的每个状态之间建立对应关系 对齐关系 理解为观测序列Y GMM:给定状态下,特征的概率 DNN:给定输入下,知道属于哪个特征(多类判决问题)状态的概率分布。
align(resource $resourchHandle, Format::const ...$style): \Vtiful\Kernel\Format 示例 $format = new \Vtiful\Kernel\Format($fileHandle); $alignStyle = $format ->align(Format::FORMAT_ALIGN_CENTER,
问题内容: 我对python和numpy很陌生。请问有人可以帮助我了解如何对用作索引的某些数组进行索引。我有以下六个2D阵列- 我想将这些数组用作索引,并将值10放入新的空矩阵的相应索引中。输出应如下所示: 到目前为止,我已经尝试过 但这给了我错误的输出。任何帮助请。 问题答案: 工作原理: 如果您在工作分配中使用 两个 numpy数组建立索引, 然后认为NumPy的作为过的各元件同时移动和中的每
NumPy是一个Python包,代表'Numerical Python'。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。 使用NumPy的操作 使用NumPy,开发人员可以执行以下操作 - 数组的数学和逻辑运算。 用于形状操纵的傅里叶变换和例程。 与线性代数有关的操作。 NumPy具有线性代数和随机数生成的内置函数。 NumPy - MatLab的替代品 NumPy经常与SciPy (