【问题标题】:Numpy nonzero function not working/minimum of a numpy array without zerosNumpy非零函数不起作用/没有零的numpy数组的最小值
【发布时间】:2018-12-10 12:20:34
【问题描述】:

我正在尝试从 numpy 数组中获取最大值和最小值。为了对数组有一个很好的了解,我使用了 pandas。基于这个结果数组,我想得到一列最大值和最小值。

import pandas as pd
import numpy as np

TEST = np.load('NPY TEST.npy')
input_array = pd.DataFrame(TEST)
print(input_array)
inputs_max = np.max(input_array, axis=0)
print(inputs_max)
inputs_min = np.min(input_array[np.nonzero(input_array)], axis=0)
print(inputs_min)

问题是,如果我使用

np.min(input_array, axis=0)

结果列仅包含零,尽管我的 numpy 数组中没有一个 0。于是我尝试使用 np.nonzero 命令,导致很多错误:

AttributeError: 'DataFrame' 对象没有属性 'nonzero'

谁能帮帮我?提前致谢。

【问题讨论】:

  • 您的数据在哪里,为什么不在您的问题中?
  • 我无法发布由 2300 行和 44 列组成的数组。这是投反对票的原因吗?
  • 不需要整个数据集,只需 minimal reproducible example 即可。也请参阅How to Ask
  • @drN15 是的,我想这是投反对票的原因之一。此外,有些人倾向于检查您是否接受了之前问题的答案。如果你没有接受正确的答案,他们很有可能会否决你当前的问题,以警告其他人不要努力回答它。这可能不是一个好的行为,但我可以理解他们......所以如果你想增加获得好答案的机会,你应该接受正确的答案并投票(只要你有 15 分)好的答案。
  • 直到现在我还不知道如何接受我刚刚为我提出的所有问题所做的答案。 :) 但是耶稣,据我所知,这个社区对新成员不是很宽容。不过还是谢谢。

标签: python numpy dataframe


【解决方案1】:

我只能猜测您的数据是什么样的,但我会试一试:

inputs_min = input_array[input_array != 0.].min(axis=0)

【讨论】:

  • 成功了!完美,谢谢。不过,我仍然很困惑为什么 numpy 命令交付零。你知道为什么吗?
  • 不客气。你也可以接受我的回答。不幸的是,我不知道为什么您的方法不起作用,因为您没有提供任何示例数据。但我想这是因为您在数据帧上使用了 numpy 函数。大多数 numpy 函数可以将数据帧作为输入,但有些不能。因此,您应该使用相应的 pandas 方法,使用条件布尔索引等“通用功能”或提取数据帧的 numpy 数组,例如:np.min(input_array.values[np.nonzero(input_array.values)], axis=0)
  • 是的,我也认为这与np函数和数据帧的交互有关。无论如何,它现在正在工作,所以我想我会保持原样。你拯救了我的一天!
猜你喜欢
  • 2015-08-09
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
相关资源
最近更新 更多