我试图在每一行中获取最小值或最大值的总和。如果第一个索引上的数字大于12,则返回该行中的最大值,否则返回该行中的最小值。请注意,在以下给定的示例中,它是一个4 x 3 2D阵列。但是我希望我的代码在给定任何数组大小或形状的情况下都能工作。
import numpy as np
arr = np.array([[11, 12, 13],
[14, 15, 16],
[17, 15, 11],
[12, 14, 15]])
i_max = np.amax(arr,axis=1)
i_min = np.amin(arr,axis=1)
print(i_max)
print(i_min)
到目前为止,我只能使用amax
和来获得每一行的最小值或最大值amin
。我缺乏的是访问每一行的第一个值,并使用if else语句将大小与12进行比较。任何人都可以给出提示。
给定样本的正确输出应为 11 + 16 + 17 + 12 = 56
np.where包含3个输入。
第一个是你的条件 [假,真,真假...]
在第二和第三的投入,都是可能的值。
因此,如果条件为True,则grep第二个输入
的值,否则,取第三个输入的值。
np.where(arr[:,0] > 12, np.max(arr, axis=1), np.min(arr, axis=1))
返回: array([11, 16, 17, 12])
如果需要总和,只需加上总和:)即可:
np.where(arr[:,0] > 12, np.max(arr, axis=1), np.min(arr, axis=1)).sum()
返回: 56
表示它的另一种方式是: [xv if c else yv for c, xv, yv in zip(condition, x, y)]
或只是阅读文档:https : //numpy.org/doc/stable/reference/generated/numpy.where.html :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句