Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧转换为numpy阵列时重塑形状_Python_Scikit Learn - Fatal编程技术网

Python 将数据帧转换为numpy阵列时重塑形状

Python 将数据帧转换为numpy阵列时重塑形状,python,scikit-learn,Python,Scikit Learn,我有一个Pandas数据框架,它有4行和N列,我将1列作为分类器的特征。如下所示 0 [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0] 1 [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1] 2 [0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0] 3 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,

我有一个Pandas数据框架,它有4行和N列,我将1列作为分类器的特征。如下所示

0    [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
1    [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1]
2    [0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0]
3    [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0]
该列本质上是16个二进制编码特征的
列表

但当我把它输入分类器时,下面的错误出现了

Traceback (most recent call last):
      clf.fit(X,y)
      X, y = check_X_y(X, y, 'csr')
      ensure_min_features, warn_on_dtype, estimator)
      array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.
我想错误是因为fit方法需要一个NxM矩阵,而它得到的形状是

(4,)
所以基本上

我想尝试将形状(4,)转换为形状(4,16)

我尝试了以下功能:

X = np.asarray(train_data['presence_vector'])
X.reshape((4,16))
X = train_data['presence_vector'].values
X.reshape((4,16))
X = train_data['presence_vector'].as_matrix()
X.reshape((4,16))

这一切都不管用。

本应该用通常的方法。如果有比下面更好的解决方案

reshaped=[]
for l in X:
    reshaped.append(l)

X_new=np.array(reshaped)
print(X_new.shape)
(4, 16)

你只是不能将形状(4,)重塑为形状(4,16),因为它们有不同数量的元素。这不能解决你的问题(顺便说一句,这是完全不清楚的)。我知道在编程上这些“可能”有不同的元素,但我“知道”它总是有相同数量的元素。我只是想知道是否有一个没有循环的解决方案。