【发布时间】:2017-04-04 09:45:57
【问题描述】:
我有一个值数组,我想从一个选项数组中替换为哪个选项是线性最接近的。
关键是选项的大小是在运行时定义的。
import numpy as np
a = np.array([[0, 0, 0], [4, 4, 4], [9, 9, 9]])
choices = np.array([1, 5, 10])
如果选择的大小是静态的,我会简单地使用 np.where
d = np.where(np.abs(a - choices[0]) > np.abs(a - choices[1]),
np.where(np.abs(a - choices[0]) > np.abs(a - choices[2]), choices[0], choices[2]),
np.where(np.abs(a - choices[1]) > np.abs(a - choices[2]), choices[1], choices[2]))
获取输出:
>>d
>>[[1, 1, 1], [5, 5, 5], [10, 10, 10]]
有没有办法在保持矢量化的同时更动态地执行此操作。
【问题讨论】:
-
从
a中减去choices,求结果的最小值,代入。
标签: python performance numpy vectorization