【问题标题】:Concatenate arrays连接数组
【发布时间】:2018-07-15 03:08:18
【问题描述】:

我有以下形状为 (53248, 1) 和 (2,1) 的数组。

array1 = data["Acceleration"].values.reshape((-1,1))

array2 = np.matlib.repmat(0,2,1)

我想像这样连接它们

twf=np.concatenate(array1,array2)

其中 data["Acceleration"] 是熊猫系列。我之所以应用reshape函数是为了得到一个(53248,1)的数组形状而不是(53248,)。

TypeError: 只有整数标量数组可以转换为标量索引

谢谢

【问题讨论】:

  • 运行上述代码时的错误信息是什么?你的预期输出是什么?
  • 您确定错误源于连接而不是重塑吗?您能否发布您所做的以确保 array1 和 array2 的形状?您能否尝试使用更短的 array1 = data["Acceleration"] 来做同样的事情,以便更容易调试?
  • 您能否给出示例输入(小于 (53248,1) 的内容)和所需的输出?
  • 阅读文档。注意concatenate 需要什么参数。很重要!具体说明错误行和/或回溯。

标签: python numpy concatenation series


【解决方案1】:

您可以使用带有两个参数的reshape 使其工作,如official documentation 所示。 首先分配data["Acceleration"].values,然后处理它。

Python Numpy Reshape Error 可能会有所帮助。

【讨论】:

  • 来自文档:a.reshape(shape, order='C'); reshape 方法接受一个形状元组或其 *args。可以建议 reshape 是问题所在,但您应该证明它可以产生给定的错误消息。
【解决方案2】:
In [220]: array1 = np.ones((5,1)); array2 = np.zeros((2,1))
     ...: 
In [221]: np.concatenate(array1,array2)    
TypeError: only integer scalar arrays can be converted to a scalar index

concatenate 的第一个参数应该是数组列表。第二个,也可以标记为axis,是连接它们的轴。这应该是一个标量。它正在尝试将您的 array2 转换为标量,因此会出现错误。

使用正确的输入(在这种情况下默认轴 0 有效)

In [222]: np.concatenate([array1,array2])
Out[222]: 
array([[1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [0.],
       [0.]])

阅读文档

文档字符串:

连接((a1,a2,...),axis=0,out=None)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2011-11-09
    • 2014-10-16
    • 1970-01-01
    相关资源
    最近更新 更多