首页 > 解决方案 > np.array 到 python 中的函数 - 'list' 对象不可调用

问题描述

我正在尝试从当前列表中删除一些值,但不知道我哪里出错了。

我刚刚开始使用 Python 探索 Jupyter 进行数据科学。任何建议将不胜感激。

Q 编写一个函数,它接受一个 NumPy 数组(任何形状和大小)和两个裁剪值,调用 range_min 和 range_max。输入中任何大于 range_max 的值都应该被裁剪为等于 range_max,任何小于 range_min 的值都应该被裁剪为等于 range_min。

    def clip_array_range(array, range_min, range_max):
        if array[val] < range_min:
            return range_min
        if array[val] > range_max:
            return range_max
        return array[val] 

    a = np.array([-3, 2, 3, 5, 22, -12, -8, 2, 10, 38, 15])
    a_clipped = clip_array_range(a, -10, 10)
    print(a_clipped)
    # expected result: [ -3   2   3   5  10 -10  -8   2  10  10  10]     

    a = np.array([100, -100, 50, -50]).reshape(2,2)
    a_clipped = clip_array_range(a, -10, 10)
    print(a_clipped)
    # expected result: [[10 -10][10,-10] 2X2 array`

错误是

     a = np.array([-3, 2, 3, 5, 22, -12, -8, 2, 10, 38, 15])       
     a_clipped = clip_array_range(a, -10, 10)
     print(a_clipped)
     # TypeError -list object is not callable

标签: pythonpython-3.xnumpyjupyter-notebook

解决方案


写这个——

def clip_array(a, min, max):
    a[a > max] = max
    a[a < min] = min
    return a

a = np.array([-3, 2, 3, 5, 22, -12, -8, 2, 10, 38, 15])
a = clip_array(a, -10, 10)

推荐阅读