Python 有效地将每列与不同的值进行比较

Python 有效地将每列与不同的值进行比较,python,arrays,numpy,Python,Arrays,Numpy,我有一个4000*6(6列)的numpy数组。我有一个最小值的numpy列(1*6)(由另一个3000*6的numpy数组组成)。 我想找到大数组中低于这些值的所有内容。但每一个值都被添加到它对应的列中 我尝试了一种简单的方法,基于我已有的单列解决方案: largearray=[float('nan') if x<min_values else x for x in largearray] largearray=[float('nan'),如果x我不使用numpy,那么它可能不是常用的解

我有一个4000*6(6列)的numpy数组。我有一个最小值的numpy列(1*6)(由另一个3000*6的numpy数组组成)。 我想找到大数组中低于这些值的所有内容。但每一个值都被添加到它对应的列中

我尝试了一种简单的方法,基于我已有的单列解决方案:

largearray=[float('nan') if x<min_values else x for x in largearray]

largearray=[float('nan'),如果x我不使用numpy,那么它可能不是常用的解决方案,但这类工作:

largearray = numpy.array([[1,2,3], [3,4,5]])
minvalues =numpy.array([3,4,5])
largearray1=[(float('nan') if not numpy.all(numpy.less(x, min_values)) else x) for x in largearray]
结果应该是:[[1,2,3],'nan']

我想你只需要

result = largearray.copy()
result[result < min_values] = np.nan

你能给出一个简单的输入和输出示例吗?不清楚你希望输出是什么形状。在Matlab中思考很好。这与你通常使用Numpy时的思考方式非常相似。@Ben添加了一个循环解决方案。它在df中,但概念相同。谢谢。但它不起作用。我得到了NaN的向量:(.我想要一个数组
result = largearray.copy()
result[result < min_values] = np.nan
result = largearray.copy()
result[np.all(result < min_values, axis=1)] = np.nan