提问人:S. S. 提问时间:5/3/2023 最后编辑:RedoxS. S. 更新时间:5/3/2023 访问量:100
数组的索引过多:数组是一维的,但有 2 个被索引
too many indices for array: array is 1-dimensional, but 2 were indexed
问:
我是使用 Python 代码的初学者。如果有人能帮助我回答我的问题,我将不胜感激。我运行下面给出的代码来生成数据并拆分测试和训练数据。我得到 200 行和 2 列的训练数据,但我得到 100 行和 1 列的测试数据。我不明白为什么训练数据有 2 列,而测试数据是 1 列。
最后,这个问题导致了问题
数组的索引过多:数组是一维的,但有 2 个被索引
当我运行下面给出的代码部分时。
feature_1_test = X_test[:,[0]].reshape(-1,1)
feature_2_test = X_test[:,[1]].reshape(-1,1)
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from pyod.models.knn import KNN
from pyod.utils.data import generate_data
outlier_fraction = 0.1
n_train = 200
n_test = 100
X_train, y_train, X_test, y_test = generate_data(n_train=n_train, n_test=n_test, contamination=outlier_fraction)
#plot train and test set
feature_1_train = X_train[:,[0]].reshape(-1,1)
feature_2_train = X_train[:,[1]].reshape(-1,1)
feature_1_test = X_test[:,[0]].reshape(-1,1)
feature_2_test = X_test[:,[1]].reshape(-1,1)
我真的很感谢你的帮助。
答:
0赞
nuwanda
5/3/2023
#1
根据“pyod”文档,函数“generate_data”以不同的顺序返回。这就是为什么你有这个维度问题。您可以通过访问此页面查看函数参数和返回。在下面,您可以看到我成功运行的版本。
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from pyod.models.knn import KNN
from pyod.utils.data import generate_data
outlier_fraction = 0.1
n_train = 200
n_test = 100
X_train, X_test, y_train, y_test = generate_data(n_train=n_train, n_test=n_test, contamination=outlier_fraction)
print(X_train.shape)
print(X_test.shape)
#plot train and test set
feature_1_train = X_train[:,[0]].reshape(-1,1)
feature_2_train = X_train[:,[1]].reshape(-1,1)
feature_1_test = X_test[:,[0]].reshape(-1,1)
feature_2_test = X_test[:,[1]].reshape(-1,1)
评论
0赞
S. S.
5/3/2023
谢谢。。。我真的很感激,如果不解决问题,我就不能再进一步了。
0赞
nuwanda
5/4/2023
乐于为您提供帮助,欢迎来到 Stack Overflow。如果此答案解决了您的问题,请将其标记为已接受。使用每个函数的文档。他们非常有帮助
评论