我正在尝试使用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文档并没有真正的帮助,我想避免使用较大的变通方法来支持计算时间。感谢任何建议!
答案 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