小编use*_*1_1的帖子

用于计算两组2d点之间的成对距离的Python替代方案

在Matlab中存在pdist2命令.给定矩阵mx2和矩阵nx2,每行矩阵代表一个2d点.现在我想建立一个mxn矩阵,使得(i,j)元素表示从距离i理论值的点mx2矩阵jTH的点nx2矩阵.我只是调用命令pdist2(M,N).

我在python中寻找替代方案.我当然可以写2 for循环,但由于我使用2个numpy数组,使用for循环并不总是最好的选择.在python宇宙中是否有针对此的优化命令?基本上我要求python替代MATLAB pdist2.

python algorithm numpy matrix euclidean-distance

5
推荐指数
1
解决办法
8020
查看次数

使用 matplotlib 翻译多边形的动画

目标是绘制一个多边形,然后水平平移它。这必须以动画形式显示。以下是我的代码:-

import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
import time
import numpy as np

verts = np.array([
    [0., -0.25],  
    [0.5, 0.],  
    [0., 0.25],  
    [0., -0.25]
    ])
codes = [Path.MOVETO,
         Path.LINETO,
         Path.LINETO,
         Path.CLOSEPOLY,
         ]

path = Path(verts, codes)

fig = plt.figure()
ax = fig.add_subplot(111)
patch = patches.PathPatch(path, facecolor='orange')
ax.add_patch(patch)
ax.set_xlim(-10,10)
ax.set_ylim(-10,10)
plt.show()
time.sleep(1)
verts[:,0]=verts[:,0]+3
path = Path(verts, codes)
patch = patches.PathPatch(path, facecolor='orange')
ax.add_patch(patch)
plt.draw()
Run Code Online (Sandbox Code Playgroud)

到目前为止plt.show(),我画了一个三角形然后显示它。此后,我暂停一下以模拟动画时间的流逝。然后我重新绘制三角形,但是当我要求matplotlib刷新绘图时,没有任何变化。我在哪里犯错误?

第二个问题,我不想重新绘制三角形,而是只想使用诸如set_patch但没有这样的方法来更新已经存在的三角形的顶点坐标。而我们确实使用set_ydata等来修改现有绘图并创建动画。如何使用某种设置方法来制作所需的运动动画?

python animation matplotlib python-2.7

4
推荐指数
1
解决办法
3021
查看次数

Condense a set of points of a polygon into a shorter set of points

I have the following polygon which is just a set of 2D points as follows:-

poly0=[80    60
    90    60
   100    60
   110    60
   110    50
   120    50
   130    50
   140    50
   150    50
   160    50
   170    50
   180    50
   190    50
   200    50
   210    50
   210    60
   210    70
   210    80
   210    90
   220    90
   220   100
   210   100
   210   110
   200   110
   200   120
   190   120
   180   120
   180   130
   170   130
   160   130
   150   130
   140   130
   130 …
Run Code Online (Sandbox Code Playgroud)

matlab polygon

2
推荐指数
1
解决办法
88
查看次数