gpt4 book ai didi

python - 神秘的 scipy "could not convert integer scalar"错误

转载 作者:太空狗 更新时间:2023-10-30 01:33:50 25 4
gpt4 key购买 nike

我正在使用 scipy.sparse.csr_matrix 构建稀疏向量,如下所示:

csr_matrix((values, (np.zeros(len(indices)), indices)), shape = (1, max_index))

这适用于我的大部分数据,但偶尔我会收到 ValueError: could not convert integer scalar

这重现了问题:

In [145]: inds

Out[145]:
array([ 827969148, 996833913, 1968345558, 898183169, 1811744124,
2101454109, 133039182, 898183170, 919293479, 133039089])

In [146]: vals

Out[146]:
array([ 1., 1., 1., 1., 1., 2., 1., 1., 1., 1.])

In [147]: max_index

Out[147]:
2337713000

In [143]: csr_matrix((vals, (np.zeros(10), inds)), shape = (1, max_index+1))
...

996 fn = _sparsetools.csr_sum_duplicates
997 M,N = self._swap(self.shape)
--> 998 fn(M, N, self.indptr, self.indices, self.data)
999
1000 self.prune() # nnz may have changed

ValueError: could not convert integer scalar

inds 是一个 np.int64 数组,vals 是一个 np.float64 数组。

scipy sum_duplicates 代码的相关部分是 here .

请注意,这是可行的:

In [235]: csr_matrix(([1,1], ([0,0], [1,2])), shape = (1, 2**34))
Out[235]:

<1x17179869184 sparse matrix of type '<type 'numpy.int64'>'
with 2 stored elements in Compressed Sparse Row format>

所以问题不在于其中一个维度是> 2^31

有没有想过为什么这些值会导致问题?

最佳答案

可能是 max_index > 2**31 ?试试这个,只是为了确保:

csr_matrix((vals, (np.zeros(10), inds/2)), shape = (1, max_index/2))

关于python - 神秘的 scipy "could not convert integer scalar"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29168699/

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