【问题标题】:Finding the number of values that satisfy something in a matrix, without using loops. Python在不使用循环的情况下查找满足矩阵中某些内容的值的数量。 Python
【发布时间】:2015-09-05 23:29:41
【问题描述】:

我要编写一个带有 3 个参数的函数:矩阵 1、矩阵 2 和一个数字 p。函数输出矩阵 1 和矩阵 2 之间的差值大于 p 的条目数。我被指示不要使用循环。

有人建议我使用 X.sum() 函数,其中 X 是一个 ndarray。

我不知道在这里做什么。

我要做的第一件事是从 M1 中减去 M2。现在我有条目,其中一个大于或不大于 p。

我试图找到一种方法来使用 sum 函数,但恐怕我看不出它对我有什么帮助。

我唯一能想到的就是浏览条目,这是不允许的。我会很感激你在这方面的帮助。 也不允许递归。

【问题讨论】:

  • 请重新格式化您的问题,有一些换行符/空格有助于提高可读性。此外,代码(如X.sub())在反引号(`)之间会更好
  • 这是逻辑问题吗?因为它听起来像一个。
  • 如果矩阵 1 和 2 只是单个整数,你会怎么做?如果您使用if,您将如何避免使用? (请注意,布尔值可以直接转换为整数。)一旦你知道如何处理单个数字,看看你是否可以在整个数组中广播使用的操作。
  • 也许是这样。也许有我忽略的属性或工具。所以我问...
  • 您可以将差异数组转换为布尔数组

标签: python numpy


【解决方案1】:
import pandas as pd
# Pick value of P
p = 20
# Instantiate fake frames
a = pd.DataFrame({'foo':[4, 10], 'bar':[34, -12]})
b = pd.DataFrame({'foo':[64, 0], 'bar':[21, 354]})
# Get absolute value of difference
c = (b - a).applymap(abs)
# Boolean slice, then sum along each axis to get total number of "True"s
c.applymap(lambda x: x > p).sum().sum()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多