gpt4 book ai didi

python - NumPy 按元素链接比较 (a <= b <= c)

转载 作者:行者123 更新时间:2023-12-05 01:50:38 25 4
gpt4 key购买 nike

Python 支持链接比较:

1<2<3<4

如何为 NumPy 执行此操作?

如果只有3个数组,我们可以这样做:

a = np.array([1,2,4,5,6])
b = np.array([2,6,1,5,6])
c = np.array([7,4,6,6,8])
np.logical_and((a <= b),(b <= c))

使用 4 个数组,它变得太繁重,因为 np.logic_and 只接受 2 个输入。

a = np.array([1,2,4,5,6])
b = np.array([2,6,1,5,6])
c = np.array([7,4,6,6,8])
d = np.array([8,9,9,9,2])
np.logical_and((a <= b),(b <= c)) # work
np.logical_and((b <= c),(c <= d)) # work
np.logical_and((a <= b),(b <= c),(c <= d)) # not work

编辑:在 2D 上稍微增加复杂性:

a = np.array([[1,2,3],
[4,5,6]])
b = np.array([[2,6,3],
[1,5,6]])
c = np.array([[7,4,3],
[6,6,8]])
d = np.array([[8,9,3],
[9,9,2]])

最佳答案

您可以使用reduce来自 functools 的方法。

import functools
import numpy as np

a = np.array([1,2,4,5,6])
b = np.array([2,6,1,5,6])
c = np.array([7,4,6,6,8])
d = np.array([8,9,9,9,2])

arr = [a <= b, b <= c, c <= d]
result = functools.reduce(np.logical_and, arr)

编辑

评论中提出了一种更干净的方法。Reduce 方法已经是 ufunc 的一部分在 numpy 中。使用它无需额外导入。我们可以通过以下方式更改上面示例的最后一行。

result = np.logical_and.reduce(arr)

关于python - NumPy 按元素链接比较 (a <= b <= c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72914535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com