gpt4 book ai didi

python - `np.concatenate` 一个带有稀疏矩阵的 numpy 数组

转载 作者:行者123 更新时间:2023-12-03 14:03:25 25 4
gpt4 key购买 nike

数据集包含数值变量和分类变量,然后我将其分为两部分:

cont_data = data[cont_variables].values
disc_data = data[disc_variables].values

然后我使用 sklearn.preprocessing.OneHotEncoder对分类数据进行编码,然后我尝试将编码的分类数据与数值数据合并:
np.concatenate((cont_data, disc_data_coded), axis=1)

但是出现以下错误:
ValueError: all the input arrays must have same number of dimensions

我确保维数相等:
print(cont_data.shape)        # (24000, 35)
print(disc_data_coded.shape) # (24000, 26)

最后发现 cont_datanumpy array尽管
>>> disc_data_coded
<24000x26 sparse matrix of type '<class 'numpy.float64'>'
with 312000 stored elements in Compressed Sparse Row format>

我更改了参数 sparseOneHotEncoder成为 False , 一切都好。
但问题是,我如何合并 numpy arraysparse matrix直接,无需设置 sparse=False ?

最佳答案

稀疏矩阵不是 numpy 数组的子类;所以numpy方法往往行不通。改用稀疏函数,例如 sparse.vstacksparse.hstack .但是所有的输入都必须是稀疏的。

或者先使稀疏矩阵稠密,用.toarray() ,并使用 np.concatenate .

你想要结果是稀疏的还是密集的?

In [32]: sparse.vstack((sparse.csr_matrix(np.arange(10)),sparse.csr_matrix(np.on
...: es((3,10)))))
Out[32]:
<4x10 sparse matrix of type '<class 'numpy.float64'>'
with 39 stored elements in Compressed Sparse Row format>
In [33]: np.concatenate((sparse.csr_matrix(np.arange(10)).A,np.ones((3,10))))
Out[33]:
array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])

关于python - `np.concatenate` 一个带有稀疏矩阵的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49420274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com