python - '具有多个元素的数组的真值是不明确的' - 什么是真值?

时间:2016-10-18 10:11:14

标签: python arrays numpy

第一篇文章!我已经查看了很多关于此问题的其他帖子,但无法找到适用于我的代码的任何内容。

我试图读取音频文件,然后找到样本数组的最大值和最小值x
wavread()是我导入的另一个模块中定义的函数 它返回fs, x x是一维数组(x.shape = (150529,)。)

def minMaxAudio(inputFile):
    (fs, x) = wavread(inputFile)
    max_val = numpy.amax(x)
    min_val = numpy.amin(x) 
    return (min_val, max_val)

当我将这些行分别输入ipython时,我得到了我想要的结果。但是当我从导入的.py文件中调用此函数时,我收到错误:

ValueError: The truth value of an array with more than one element is ambiguous.   
Use a.any() or a.all()

它突出显示最后一行(return语句)作为错误的位置。

我所看到的其他帖子在代码中包含了某种评估或比较运算符。我没有......是吗?!

谢谢!

1 个答案:

答案 0 :(得分:0)

您是否注意到如果您的WAV文件有多个频道,请说它是立体声,min_val和max_val本身就是数组?

这样的代码会触发您遇到的错误:

min, max = minMaxAudio('acdc.wav')
# Assuming floats
if max > 1:
    print('saturation')

以下内容适用:

min, max = minMaxAudio('acdc.wav')
# Assuming floats
if np.any(max > 1):
    print('saturation')