使用numpy向量化时出现“轴-1对于维度0不存在”错误

问题描述

我正在尝试将自定义函数映射到numpy数组的每个元素。有问题的功能:

"5f10482574d83d4b726fe5"

此函数本质上是excel match的一个版本,但它用于从上方或下方为给定输入查找范围内的最接近值。在将lookup_array传递给此函数之前,将对其进行相应的排序。

当我尝试在数组上映射此函数时,出现错误。例如:

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不存在”。感谢您的帮助。

谢谢!

解决方法

您忘记告诉程序不允许在查找数组上进行向量化。您可以使用排除的参数轻松解决该问题。这段代码对我来说很好用(请注意,现在必须命名参数):

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))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...