【问题标题】:Why I am getting repetitions after calculation in python?为什么我在 python 中计算后得到重复?
【发布时间】:2021-05-19 14:27:53
【问题描述】:

我正在执行一些简单的语句,我期望一个数组作为我的结果。但是,结果我得到了 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 行?

【问题讨论】:

    标签: python numpy combinations itertools


    【解决方案1】:

    你正在做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)
    

    你一次又一次地抛弃了整个组合。只需要更改r1r2的值,然后一个循环。

    【讨论】:

      猜你喜欢
      • 2020-12-21
      • 2011-01-08
      • 2020-02-28
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      相关资源
      最近更新 更多