【问题标题】:Why can't I stack my 2 arrays vertically using numpy vstack?为什么我不能使用 numpy vstack 垂直堆叠我的 2 个数组?
【发布时间】:2021-12-29 01:53:10
【问题描述】:
>>> Ne['State_1_spe_sum'].shape
(3, 1)
>>> Ne['State_1_inc'].shape
(63, 1)
>>> np.vstack((Ne['State_1_spe_sum'], Ne['State_1_inc']))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-58-2c1ac75279f6> in <module>
----> 1 np.vstack((Ne['State_1_spe_sum'], Ne['State_1_inc']))

<__array_function__ internals> in vstack(*args, **kwargs)

~\anaconda3\lib\site-packages\numpy\core\shape_base.py in vstack(tup)
    281     if not isinstance(arrs, list):
    282         arrs = [arrs]
--> 283     return _nx.concatenate(arrs, 0)
    284 
    285 

<__array_function__ internals> in concatenate(*args, **kwargs)

TypeError: invalid type promotion

据我了解,使用 numpy vstack 堆叠数组需要数组具有相同的维度和列(用于 vstacking)。我符合要求,但为什么我不断收到此错误?我试着做np.concatenate,但它给了我同样的错误。任何人都可以帮助我了解发生了什么吗?

【问题讨论】:

  • 你的数组的数据类型是什么?
  • 我刚查了一下,是'
  • 什么是Ne?结构化数组?熊猫数据框?字典?我猜测基于字符串“索引”。它不是一个普通的数值数组。
  • np.vstack 只是调整尺寸,并将任务传递给concatenate。这就是回溯显示的内容。错误消息说参数的 dtypes 之间存在一些不匹配。
  • Ne 是我在读取数据时使用 for 循环附加变量的字典。

标签: python arrays numpy vstack


【解决方案1】:

您的问题中没有足够的信息来回答。

使用您目前提供的内容:

import numpy as np

a = np.array([[1]] * 3, dtype='<f8')
print(a.shape)
b = np.array([[1]] * 61, dtype='<f8')
print(b.shape)

c = np.vstack((a, b))
print(c.shape)

结果:

(3, 1)
(61, 1)
(64, 1)

您需要提供有关数组类型和内容的更多信息,或分享展示您如何构造它们的示例代码,以便我们重现错误。

【讨论】:

  • 是的,很抱歉。原来我的数组没有匹配的数据类型。我现在能够解决我的问题。谢谢。
  • 没关系 - 你应该自己发布一个答案并接受它,如果你觉得它回答了它,就接受这个答案(虽然我不这么认为),或者如果你觉得它可以删除这个问题只是一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多