0

の列に関して多くの質問と回答が寄せられていることは承知していますがNumPy、まだ行き詰っています。残念ながら、np.appendモジュールがないと言われているため、うまくいきません。

bostonメインとは別に保存された中央値を持つデータセットを使用していますboston.data(形状は(506、13)として(形状は(506、1)です)。機能(別名列)boston.targetになるようにしたいboston.targetが追加され、boston.data形状が (506, 14) になり、boston.data[13] がboston.targetデータになります。

私が見た他の提案に基づいた私の試みは次のとおりです。

np.append(boston.data, boston.target, axis=0)
print boston.data.shape

ただし、これによりエラーが発生します。

ValueError: all the input arrays must have same number of dimensions

実行しても何も返されないか、少なくとも私が知る限りでnp.append(boston.data, boston.target)は同じを返します。boston.data

私は何を間違っていますか?

編集:

誰かがipython開いている場合、コード全体は以下のとおりです。

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
boston = load_boston()

print boston.data.shape
print boston.target.shape
copyarr = np.append(boston.data, boston.target, axis=1) #changed still runs error
print copyarr.shape

at --> copyarr = np.append(boston.data, boston.target, axis=1)
ValueError: all the input arrays must have the same number of dimensions
4

1 に答える 1

0

まず、0 ではなく axis=1 を設定する必要があります。行ではなく列を追加しようとしています。そのため、numpy は配列の次元数が異なるというエラーを出しています。

import numpy as np
A = np.append(boston.data, boston.target.reshape(-1, 1), axis=1)

列を追加する別の方法は、hstack を使用することです。

import numpy as np
A = np.hstack((boston.data, boston.target.reshape(-1, 1)))

問題の原因は、boston.target の形状が (506,) であることです。これは 1D 配列boston.dataですが、2D 配列である形状 (506, 13) を持っています。データが 1 列に再形成されるように -1 が行数を推測することを意味する場所boston.target(506, 1) を使用して、明示的に形状を変更する必要があります。boston.target.reshape(-1, 1)

また、どちらの場合も、配列のコピーが作成されることに注意してください。つまり、配列 boston.data はその場で変更されません。これは、上記のように、列を追加した結果を別の変数に格納する必要があることを意味します。

于 2014-02-25T02:30:45.470 に答える