有人能告诉我如何连接两个不等的numpy数组(一个稀疏和一个密集)。我尝试使用hstack / vstack,但不断收到维度错误。
from scipy import sparse
from scipy.sparse import coo_matrix
m=(coo_matrix(X_new)) # is a(7395,50000) sparse array
a=(other) # is a (7395,20) dense array
new_tr=scipy.sparse.hstack((m,a))
答案 0 :(得分:0)
请发布更多背景信息以使您的问题可以重现。发布后,您的代码适合我:
X_new = np.zeros((10,5), int)
X_new[(np.random.randint(0,10,5),np.random.randint(0,5,5))] = np.random.randint(0,10,5)
X_new
#array([[ 0, 0, 7, 0, 0],
# [ 0, 0, 0, 0, 0],
# [ 0, 0, 8, 3, 0],
# [ 0, 0, 0, 0, 0],
# [ 0, 0, 0, 0, 0],
# [ 0, 0, 0, 0, 0],
# [ 0, 0, 8, 0, 0],
# [ 1, 0, 0, 0, 0],
# [ 0, 0, 0, 0, 0],
# [ 0, 0, 0, 0, 0]])
m = coo_matrix(X_new)
m
#<10x5 sparse matrix of type '<type 'numpy.int64'>'
# with 5 stored elements in COOrdinate format>
a = np.matrix(np.random.randint(0,10,(10,2)))
a
#matrix([[2, 1],
# [5, 2],
# [4, 1],
# [1, 4],
# [5, 2],
# [7, 2],
# [6, 3],
# [8, 4],
# [5, 5],
# [7, 4]])
new_tr = sparse.hstack([m,a])
new_tr
#<10x7 sparse matrix of type '<type 'numpy.int64'>'
# with 25 stored elements in COOrdinate format>
new_tr.todense()
#matrix([[ 0, 0, 7, 0, 0, 2, 1],
# [ 0, 0, 0, 0, 0, 5, 2],
# [ 0, 0, 8, 3, 0, 4, 1],
# [ 0, 0, 0, 0, 0, 1, 4],
# [ 0, 0, 0, 0, 0, 5, 2],
# [ 0, 0, 0, 0, 0, 7, 2],
# [ 0, 0, 8, 0, 0, 6, 3],
# [ 1, 0, 0, 0, 0, 8, 4],
# [ 0, 0, 0, 0, 0, 5, 5],
# [ 0, 0, 0, 0, 0, 7, 4]])