python - 如何使用 numpy vectorize 遍历二维向量?
问题描述
我正在尝试使用 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 文档并没有真正帮助,我想避免大的变通方法有利于计算时间。感谢您的任何建议!
解决方案
这有点猜测,但看起来您的代码可以简化为
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
推荐阅读
- c++ - 为什么 C++ 20 范围算法在
和意见 ? - python-3.x - 按照与第二个列表相同的顺序对列表进行排序
- ajax - 来自时事通讯的 Ajax 反馈
- bash - zsh 无法识别任何包
- typescript - 如何在 Electron 中使用 Typescript 脚本?
- c - 使用 pthread 进行多线程处理的问题:线程过早执行
- python - 显示具有 4-D 数组形状的 FITS 图像(python)
- reactjs - React 路由器 v6 插座似乎不起作用
- nestjs - 通过 NestJS 为所有 TypeORM 连接设置角色
- python - 带字符串的数据框中的 SUMPRODUCT 等价物