gpt4 book ai didi

python - 过滤掉两个/一个/两个都不为非零的矩阵元素?

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:25 27 4
gpt4 key购买 nike

我有两个 numpy 数组 AB。我想创建数组 ApBp 这样 ApBp 都是 A< 的元素B,其中 AB 中至少有一个为非零,或者两者都不为零。一个例子可能是:

A = [ 1.1, 0.0, 3.1, 4.1, 5.1, 0.0, 0.0, 8.1 ]
B = [ 0.0, 2.2, 3.2, 4.2, 0.0, 0.0, 7.2, 8.2 ]

然后在我要生成的一个函数中:

Ap = [ 1.1 0.0 3.1 4.1 5.1 0.0 8.1 ]
Bp = [ 0.0 2.2 3.2 4.2 0.0 7.2 8.1 ]

在另一个我想生成:

Ap = [ 3.1 4.1 8.1 ]
Bp = [ 3.2 4.2 8.1 ]

现在我只是浏览并查看每个元素,但我觉得应该有更好/更快的方法。

更新:

我有一个调用 (A,B) 的函数,它们是 [nx,ny,3] 大小的 numpy 数组。然后我调用以下内容:

tA = np.copy(A)
tB = np.copy(B)

tA = tA.flatten()
tB = tB.flatten()

Aeq0 = tA==0
Beq0 = tB==0

Ano0 = A!=0
Bno0 = B!=0

As = tA[ Ano0 | Bno0 ]
Bs = tB[ Ano0 | Bno0 ]

它死于 As = tA[ Ano0 | Bno0]

最佳答案

您可以使用屏蔽索引来实现这一点。

A = np.asarray(A)
B = np.asarray(B)

ind1 = A!=0
ind2 = B!=0

然后,实现第一种情况(|是一个“或”运算符):

case1 = ind1 | ind2 
Ap = A[case1]
Bp = A[case1]

而对于第二种情况(& 是一个“与”运算符):

case2 = ind1 & ind2 
Ap = A[case2]
Bp = A[case2]

关于python - 过滤掉两个/一个/两个都不为非零的矩阵元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32799076/

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