【发布时间】:2019-11-12 20:41:51
【问题描述】:
我有两个 Pandas 数据框,比如 df1 和 df2(形状 (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(data2、type(data)返回的值吗? -
查看
data.shape和data.dtype。在一种情况下,形状将是多维的和 dtype 数字。我期望的另一个是带有对象 dtype 的 1d。那是因为组件阵列的形状不同。np.stack((data1, data2))是构造相同数字 dtype 的另一种方式(当形状匹配时)。当它们不匹配时会引发错误。 -
@hpaulj 我查看了每个数据框的形状,发现当构造“失败”时,其中一个数据框的形状是 (9, 15) 而不是 (10, 15) - 这发生在之后加工。我解决了这个问题,现在一切正常,谢谢!
标签: python arrays pandas numpy