gpt4 book ai didi

python - Scipy值错误: Total size of new array must be unchanged

转载 作者:行者123 更新时间:2023-11-30 23:10:18 25 4
gpt4 key购买 nike

我目前正在使用 Scipy 0.7.2 和 Numpy 1.4.1。我的Python版本是2.6.6。我编写了一个简单的代码来从 .mtx 文件读取 coo 稀疏矩阵,如下所示:

data = scipy.io.mmread('matrix.mtx')

运行代码时,出现以下错误:

Traceback (most recent call last):                                    
File "read_mat.py", line 31, in <>
data = scipy.io.mmread('matrix.mtx')
File "/usr/lib64/python2.6/site-packages/scipy/io/mmio.py", line 52, in mmread
return MMFile().read(source)
File "/usr/lib64/python2.6/site-packages/scipy/io/mmio.py", line 273, in read
return self._parse_body(stream)
File "/usr/lib64/python2.6/site-packages/scipy/io/mmio.py", line 417, in _parse_body
flat_data = flat_data.reshape(-1,3)
ValueError: total size of new array must be unchanged

我检查了一些关于SO的问题,发现这可能是一些版本特定的问题,但是,根据this ,它已在我的版本中修复。有人可以告诉我我在这里能做什么吗?提前致谢!

编辑:我尝试打开另一个文件,并且它已被读取。所以,我猜问题出在我的文件上。我粘贴下面两个文件的前几行:

打开的文件:

%%MatrixMarket matrix coordinate integer general
%
1466983 1466983 655955608
1 1 3448
1 2 824
1 3 1492
1 4 132
1 5 426

无法打开的文件:

%%MatrixMarket matrix coordinate integer general
%
11162 11162 233925
1 2 1
1 3 1
1 4 1
1 16 1
1 19 1

最佳答案

回溯的最后几行表明了可能的问题:数据文件被读取为平面(1D)数组,然后 scipy 尝试将数组 reshape 为 (n, 3) 数组,但失败了。这意味着平面数组的大小不是三的倍数(如果您尝试 reshape np.ones(4).reshape(-1, 3),您会得到相同的错误)。

事实上,平面数组不是三个的多重数组,这意味着在一行中的某个位置缺少一个数字。那或者一行(或多行)不知何故格式错误。它可能只是被截断的最后一行,这很容易检查。

如果您使用的是 *nix,您可以使用 awk 来检查:

awk '{ print NF }' matrix.mtx | grep -v 3

应显示没有由空格分隔的 3 列的行。

您也可以使用 awk 删除坏行:

awk '(NF == 3 || NR < 3) { print $0 }' matrix.mtx > goodmatrix.mtx

关于python - Scipy值错误: Total size of new array must be unchanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30748113/

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