如何解决为什么我在python中计算后得到重复?
我正在执行一些简单的语句,我期望得到一个数组作为结果。但是,结果我得到了 6 行。
from itertools import combinations
import numpy as np
res = [
np.array([[12.99632095],[29.60571445],[-1.85595153],[68.78926787],[ 2.75185088],[ 2.75204384]]),np.array([[ 15.66458062],[ 22.16467595],[ -3.75927882],[ -2.65954113],[ 2.30128711],[197.45459974]])
]
pairs = combinations(res,2)
for pair in pairs:
r = np.concatenate(pair,axis=1)
r1 = pair[0]
r2 = pair[1]
sign = np.sign(r1 * r2)
result = np.multiply(
sign,np.min(np.abs(r),axis=1) / np.max(np.abs(r),axis=1)
)
r
的值是这样的
[[ 12.99632095 15.66458062]
[ 29.60571445 22.16467595]
[ -1.85595153 -3.75927882]
[ 68.78926787 -2.65954113]
[ 2.75185088 2.30128711]
[ 2.75204384 197.45459974]]
我得到的result
是这样的
[[ 0.82966287 0.74866209 0.49369882 0.03866215 0.83626883 0.0139376 ]
[ 0.82966287 0.74866209 0.49369882 0.03866215 0.83626883 0.0139376 ]
[ 0.82966287 0.74866209 0.49369882 0.03866215 0.83626883 0.0139376 ]
[-0.82966287 -0.74866209 -0.49369882 -0.03866215 -0.83626883 -0.0139376 ]
[ 0.82966287 0.74866209 0.49369882 0.03866215 0.83626883 0.0139376 ]
[ 0.82966287 0.74866209 0.49369882 0.03866215 0.83626883 0.0139376 ]]
我预期的 result
大约是现有结果的一行。
[[ 0.82966287 0.74866209 0.49369882 -0.03866215 0.83626883 0.0139376 ]]
为什么在现有结果输出的第 4 行中出现重复和 -
结果?
解决方法
你正在做combinations
。因此,如果您有更多组合,您还需要 append
结果。
results = []
for pair in pairs:
r = np.concatenate(pair,axis=1)
for i in range(len(r)):
r1 = r[:,0]
r2 = r[:,1]
sign = np.sign(r1 * r2)
result = np.multiply(sign,np.min(np.abs(r),axis=1) / np.max(np.abs(r),axis=1))
results.append(result)
你一次又一次地砍掉了整个组合。只需要改变r1
、r2
的值,和一个循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。