【问题标题】:Numpy np.array() constructor behaving "inconsistently"Numpy np.array() 构造函数行为“不一致”
【发布时间】:2019-11-12 20:41:51
【问题描述】:

我有两个 Pandas 数据框,比如 df1df2(形状 (10, 15)),我想将它们变成 Numpy 数组,然后构造一个包含它们的 Numpy 数组(形状 (2 , 10, 15))。我目前这样做如下:

data1 = df1.to_numpy()
data2 = df2.to_numpy()
data = np.array([data1, data2])

现在我正在尝试对多对数据帧执行此操作,当我为某些数据帧调用 data.any() 时,我正在使用的代码会中断,从而给出真值错误说使用 any()all()(我已经在做)。当我看到这种情况发生时,我开始打印data,我注意到np.array() 构造函数将生成类似于[[[...]]][array([[...]])] 的内容。

第一个工作正常,但第二个不行。数据帧的差异不是随机的,它会中断某些数据帧,但是所有这些数据帧都以相同的方式进行预处理和处理,我已经手动检查了那些不起作用的数据帧没有任何异常.

由于我无法提供太多明确的代码/数据(代码非常庞大,每个数组有 300 个条目),我的主要问题是为什么数组构造函数要么给出 [[[...]]][array([[...]])] 形式,以及为什么第二个不喜欢我打电话给data.any()

【问题讨论】:

  • 你能发布type(data1)type(data2type(data)返回的值吗?
  • 查看data.shapedata.dtype。在一种情况下,形状将是多维的和 dtype 数字。我期望的另一个是带有对象 dtype 的 1d。那是因为组件阵列的形状不同。 np.stack((data1, data2)) 是构造相同数字 dtype 的另一种方式(当形状匹配时)。当它们不匹配时会引发错误。
  • @hpaulj 我查看了每个数据框的形状,发现当构造“失败”时,其中一个数据框的形状是 (9, 15) 而不是 (10, 15) - 这发生在之后加工。我解决了这个问题,现在一切正常,谢谢!

标签: python arrays pandas numpy


【解决方案1】:

问题是在处理数据后,一些数据帧丢失了行(即形状为 (x, 15),其中 x

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2023-03-11
    • 2018-05-06
    • 2020-01-20
    相关资源
    最近更新 更多