我正在使用Pandas生成一些信息和功能。我将使用该数据库作为 sklearn 的输入。目前,我正在使用.as_matrix()
将数据帧转换为数组。以下是输出:
array([[0.4437294900417328, 0.13434134423732758, 0.474, 0.482,
array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0])],
[0.09896088391542435, 0.10105254501104355, 0.474, 0.526,
array([0, 0, 0, 0, 0, 1, 0, 0, 0, 0])],
[0.026971107348799706, 0.08766224980354309, 0.474, 0.581,
array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0])],
...,
我想将此内部数组溶解到父 2D 数组中。结果应如下所示。
array([[0.4437294900417328, 0.13434134423732758, 0.474, 0.482,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0.09896088391542435, 0.10105254501104355, 0.474, 0.526,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
[0.026971107348799706, 0.08766224980354309, 0.474, 0.581,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
...,
蒂亚
正如我评论的那样,数组的确切结构尚不清楚。 我确定外部 dtype 是对象。 熊猫经常使用它来保存混合数据。
这是一个猜测和可能的解决方案:
创建一个对象数组并用一些浮点数和整数数组填充它:
In [38]: A=np.empty((3,5),dtype=object)
In [39]: A[:,:4]=np.arange(12.).reshape(3,4)/10
In [40]: A[0,-1]=np.arange(5)
In [41]: A[1,-1]=np.arange(1,6)
In [42]: A[2,-1]=np.arange(2,7)
In [43]: A
Out[43]:
array([[0.0, 0.1, 0.2, 0.3, array([0, 1, 2, 3, 4])],
[0.4, 0.5, 0.6, 0.7, array([1, 2, 3, 4, 5])],
[0.8, 0.9, 1.0, 1.1, array([2, 3, 4, 5, 6])]], dtype=object)
打印是类似的。 reshape
、concatenate
、ravel
等不加入浮点数和数组。
相反,让我们创建一个数组来保存预期值,并将它们复制到其中:
In [44]: B=np.zeros((3,9),float)
In [45]: B[:,:4]=A[:,:4]
复制浮点列很容易。 但是将数组重新加工成可以作为块复制的东西,需要串联。 vstack
形式似乎可以解决问题:
In [46]: B[:,4:]=np.vstack(A[:,-1])
In [47]: B
Out[47]:
array([[ 0. , 0.1, 0.2, 0.3, 0. , 1. , 2. , 3. , 4. ],
[ 0.4, 0.5, 0.6, 0.7, 1. , 2. , 3. , 4. , 5. ],
[ 0.8, 0.9, 1. , 1.1, 2. , 3. , 4. , 5. , 6. ]])
我必须根据我对数组显示的了解(包括对象类型)重新创建您的数组。 然后我只需要玩一玩,尝试各种加入价值观的方式。 所以有很多试验和错误。