【问题标题】:How to find the columns that at least contain one negative element?如何找到至少包含一个负面元素的列?
【发布时间】:2020-05-01 15:57:08
【问题描述】:

在 Python 中,对于一个数组,我如何才能找到至少包含一个负元素的列?此外,如何找到至少包含一个负值的行的中位数? 假设这是我们的数组:

import numpy as np
a = np.array([[1,2,0,-4],[-3,4,-4,1],[3,6,2,9]])

提前致谢。

【问题讨论】:

    标签: python arrays function numpy


    【解决方案1】:
    >>> (a < 0).any(axis=0)
    array([ True, False,  True,  True])
    
    # Columns.
    >>> np.median(a[:, (a < 0).any(axis=0)], axis=0)
    array([1., 0., 1.])
    
    # Rows.
    >>> np.median(a[:, (a < 0).any(axis=0)], axis==1)
    array([ 0., -3.,  3.])
    
    # Median of rows where row contains at least one negative value.
    >>> np.median(a[(a < 0).any(axis=1), :], axis=1)
    array([ 0.5, -1. ])
    

    【讨论】:

    • 我认为 OP 正在做作业。向他展示捷径还是老派的做法是否明智?
    • a[:, bool_filter]: 表示从a 中选择所有行,bool_filter 是一个布尔值数组,指示要选择哪些列。在这种情况下,(a &lt; 0).any(axis=0) 表示任何包含负值的列 (axis=0) 的 True,否则为 False
    • 此外,通常axis=0 表示行,axis=1 表示列。这里为什么相反?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多