如何对numpy.array应用max(0,(x-1.5)**3)函数得到预期结果?
解决numpy数组逐元素计算max(0, (x-1.5)**3)的问题
Python内置的max()函数只能处理单一值或可迭代对象的整体最大值,没法对numpy数组和标量做逐元素的最大值比较,所以你的代码会报错。下面是几种可行的实现方式:
方法一:用numpy原生的np.maximum()(推荐)
这个函数支持广播机制,能直接对数组和标量进行逐元素的最大值计算,效率最高:
import numpy as np aaa = np.array([1.1, 2.2, 3.3]) result = np.maximum(0, (aaa - 1.5)**3) print(result) # 输出:[0. 0.343 5.832]
方法二:列表推导式遍历元素
手动遍历数组每个元素,用内置max()计算后再转回numpy数组,适合小量级数组:
import numpy as np aaa = np.array([1.1, 2.2, 3.3]) result = np.array([max(0, (x - 1.5)**3) for x in aaa]) print(result)
方法三:用np.where()条件选择
先计算所有元素的(x-1.5)**3值,再根据是否大于0选择对应值:
import numpy as np aaa = np.array([1.1, 2.2, 3.3]) calc_vals = (aaa - 1.5)**3 result = np.where(calc_vals > 0, calc_vals, 0) print(result)
内容的提问来源于stack exchange,提问作者vivian
相关产品推荐
相关产品推荐

