Python &引用;尺寸0的轴-1不存在;使用numpy矢量化时出错

Python &引用;尺寸0的轴-1不存在;使用numpy矢量化时出错,python,numpy,vectorization,Python,Numpy,Vectorization,我试图将自定义函数映射到numpy数组的每个元素。有关职能: def find_closest(value, lookup_array, breed=True): if breed == True: return lookup_array[sum(lookup_array <= value) - 1] else: return lookup_array[sum(lookup_array >= value) - 1] 我有一个错误: 尺

我试图将自定义函数映射到numpy数组的每个元素。有关职能:

def find_closest(value, lookup_array, breed=True):
    if breed == True:
        return lookup_array[sum(lookup_array <= value) - 1]
    else:
        return lookup_array[sum(lookup_array >= value) - 1]
我有一个错误:

尺寸0的轴-1不存在


非常感谢您的帮助。

您忘了告诉程序不允许在查找数组上进行矢量化。通过使用参数excluded,可以很容易地解决这个问题。这段代码对我来说很好(请注意,现在必须命名参数):

将numpy导入为np
def find_closest(值、查找数组、品种=True):
如果breed==True:
返回查找数组[和(查找数组=值)-1]
lut=np.数组(np.arange(-20,20.25,0.25))
样本1=np.随机.正常(大小=(10,10))
func=np.vectorize(查找最近的,排除的=['lookup\u array']))
打印(func(值=sample1,查找数组=lut))

np.vectorize
将所有参数的标量传递给函数。如果只迭代第一个参数,会更简单。我尝试了这个解决方案。然而,我得到了另一个错误:“TypeError:”
import numpy as np
mapped_arr = np.vectorize(find_closest)(np.random.normal(size=(10,10)),np.array(np.arange(-20,20.25,0.25)))
import numpy as np

def find_closest(value, lookup_array, breed=True):
    if breed == True:
        return lookup_array[sum(lookup_array <= value) - 1]
    else:
        return lookup_array[sum(lookup_array >= value) - 1]
        
lut = np.array(np.arange(-20,20.25,0.25))
sample1 = np.random.normal(size=(10,10))

func = np.vectorize(find_closest, excluded=['lookup_array'])
print(func(value=sample1,lookup_array=lut))