我有一个整数矩阵,phase_space
的形状(n,n)
,其中每个条目表示空间中该位置的点数。我还有两个更新矩阵u_x, u_y
,形状也是(n,n)
,整数在0,...,n
范围内,指定我的动力系统在空间中取每个对应点的位置。
我想“应用”更新矩阵的相空间迭代。你知道吗
例如,如果
>>>u_x
array([[1, 2, 1],
[0, 1, 2],
[0, 0, 0]])
>>>u_y
array([[2, 1, 2],
[1, 0, 1],
[2, 2, 0]])
>>>phase_space
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
我想要
>>>new_phase_space
array([[1., 1., 2.],
[1., 0., 2.],
[0., 2., 0.]])
我目前的解决方案是如下循环
for i in range(n):
for j in range(n):
new_phase_space[u_x[i, j], u_y[i, j]] += phase_space[i,j]
有什么方法可以把它矢量化吗?你知道吗
您可以使用
pandas.DataFrame.groupby()
累积phase_space
中具有相同坐标的所有移动:输出:
我们可以用^{} -
在更通用的设置上运行示例-
我们还可以利用稀疏矩阵,特别是在考虑记忆的情况下-
输出将是一个稀疏矩阵。要转换为密集型,请使用
out.toarray()
。你知道吗相关问题 更多 >
编程相关推荐