如何使用numpy向量化来迭代二维向量?

时间:2018-09-21 19:04:15

标签: python numpy matrix vector coordinates

我正在尝试使用numpy.vectorize对(2x5)矩阵进行迭代,该矩阵包含两个表示坐标x和y值的向量。坐标(x和y值)将被馈送到函数,该函数为每次迭代返回一个(1x1)向量。最后,结果应该是(1x5)向量。我的问题是,我不希望遍历每个元素,而是希望算法同时遍历两个向量,因此它可以并行获取坐标的x和y值,以将其馈送到函数中。

data = np.transpose(np.array([[1, 2], [1, 3], [2, 1], [1, -1], [2, -1]]))
th_ = np.array([[1, 1]])
th0_ = -2

def positive(x, th = th_, th0 = th0_):
    if signed_dist(x, th, th0)[0][0] > 0:
        return np.array([[1]])
    elif signed_dist(x, th, th0)[0][0] == 0:
        return np.array([[0]])
    else:
        return np.array([[-1]])
positive_numpy = np.vectorize(positive)
results = positive_numpy(data)

阅读numpy文档并没有真正的帮助,我想避免使用较大的变通方法来支持计算时间。感谢任何建议!

1 个答案:

答案 0 :(得分:0)

这有点猜测,但是看起来您的代码可以简化为

data = np.array([[1, 2], [1, 3], [2, 1], [1, -1], [2, -1]])  # (5,2) array
th_ = np.array([[1, 1]])
th0_ = -2
alist = [signed_dist(x, th_, th0_) for x in data]
arr = np.array(alist)    # (5,?,?) array
arr = arr[:,0,0]   # (5,) array
arr[arr>0] = 1