【发布时间】:2021-05-10 10:19:26
【问题描述】:
假设我有一个 2D numpy 数组,比如
arr = array([[0, 0.001 , 0.002], [0.03, 0.04, 0.05], [0.01, 0.002, 0.5], [0.05, 0.8, 0.003]])
我想对其执行分段函数,比如说
def gammacor(x):
return np.piecewise(x, [x <= 0.00313, x > 0.00313], [12.92*x, 1.055*x**(1/2.4)-0.055])
gcarr = gammacor(arr)
当我这样做时,我得到一个错误:
TypeError:NumPy 布尔数组索引分配需要 0 或 1 维输入,输入有 2 维
如果我尝试在展平数组上运行该函数(计划在运行该函数后重新整形回 n x 3),我会收到错误:
ValueError: NumPy 布尔数组索引分配不能将 3 个输入值分配给掩码为 true 的 0 个输出值
有没有一种简单的方法可以将分段函数应用于 2D(或 ND)数组的所有元素?
【问题讨论】:
-
piecewise适用于 2 或 3d 数组。但是您的函数甚至不适用于一维数组。 -
出于某种原因,当我用一维数组调用它时它确实有效。奇怪。