【问题标题】:Problem of Numpy returning error while appending arrays附加数组时 Numpy 返回错误的问题
【发布时间】:2020-02-10 16:25:23
【问题描述】:

“ValueError:除了连接轴之外的所有输入数组维度必须完全匹配”是我在尝试附加 values.PFB 代码时遇到的错误。 x 是一个大小为 [16754,3] 的数据集,a 是一个大小为 [16754,1] 的数组。据我了解,轴完全匹配。

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('data_monthly_rainfall.csv')
x = dataset.iloc[:, [0,1,2]].values
y = dataset.iloc[:, 3].values

# Apending a coloumn y with 1 for the equation
import statsmodels.api as sm
a = np.ones((16754, 0)).astype(int)
x = np.append(arr = a,values = x, axis = 1)

谁能告诉我这里做错了什么?在学习阶段,我对 python 和 ML 非常陌生。如果需要更多信息,请告诉我。

Link to the dataset

【问题讨论】:

  • np.appendaxis=1 只是 np.concatenate([A, B], axis=1)。改用那个。你为什么要加入一个尺寸为 0 的数组?那是无用的一步。使用x。如果这是循环的一部分,请改用列表追加。
  • 检查并仔细检查ax 的尺寸。这有效:np.append(arr=np.ones((10,0)), values=np.ones((10,3)), axis=1)
  • 感谢您的回复。但我都试过了,它给了我同样的错误。那个 0 是个错误,我已经将它编辑为一个,它仍然无法正常工作。基本上,我的要求是添加一列 1 并将其附加到 x 的开头。
  • x.shapex.dtype 是什么?我们可能还需要通过回溯查看完整错误。
  • 谢谢@hpaulj 问题已解决

标签: python numpy machine-learning append


【解决方案1】:

问题在于x 的形状为 (16755, 3),而您正在创建形状为 (16754, 1) 的 a。不匹配发生在行上。将a的尺寸改为(16755, 1)

a = np.ones((16755, 1)).astype(int)

您可以通过将行数保存在变量中来完全避免这种情况。

m = x.shape[0]
a = np.ones((m, 1)).astype(int)
x = np.append(arr = a,values = x, axis = 1)

【讨论】:

  • 虽然这是问题中代码的一个非常明显的问题,但它不会导致声称的错误,并且修复它不会修复声称的错误。我们没有足够的信息来诊断所声称的错误的原因。
  • @user2357112 是正确的,我也试过了。但它没有修复错误。你能告诉我还需要什么信息吗?
  • @SreedevR:我们需要可以运行的东西,它会在运行时产生您描述的错误。我们无法运行您发布的内容,因为我们没有 x 的原始值。
  • 我在问题中添加了更多信息。数据集也在 desc 中链接。我正在尝试制作一个可以预测降雨量的模型。 y 是降雨量,所有其他值都是 x。
猜你喜欢
  • 2017-03-23
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多