所以我有一个看起来像这样的文件,名为xs80.txt:
0.0126619524 0.0 0.0 0.0122716055 0.0 0.0 0.0119240615 0.0 0.0
2.8980740435 0.0 0.0 2.9224417792 0.0 0.0 2.9449901605 0.0 0.0
0.1569375956 0.0 0.0 0.1546671493 0.0 0.0 0.1526119469 0.0 0.0
with open("xs80.txt", "r") as ins:
array = []
for line in ins:
array.append(line)
from numpy import loadtxt
text_file = open("xs80.txt", "r")
myarray = numpy.array(text_file.read().split(','))
因此,当我进行此转换时,我收到错误消息:
ValueError: total size of new array must be unchanged
我原以为将数组中的读取整形为3d数组的尺寸3,3,3可以工作,因为该文件有27个元素,所以它可以放入长度为3,宽度为3的三维数组中。矢量大小3.我还缺少什么吗?
答案 0 :(得分:0)
要将数据读入3x3x3 numpy.array
,请直接使用numpy.loadtxt
,因为它已经拆分了行并将参数转换为数字。
myarray = numpy.loadtxt("xs80.txt").reshape(3,3,3)
但是,您的代码确实存在其他一些问题:
缩进遍布各处,使用两个空格,四个空格,with
- 块的开头有太多缩进。当我运行你的代码时,我实际上得到了
from numpy import loadtxt
^
IndentationError: unindent does not match any outer indentation level
您已将文件中的行读到array
,但您不能对array
您导入numpy.loadtxt
并对其执行任何操作,
您再次打开该文件,并将其内容转换为包含字符串的1元素1d numpy.array
:
array([ '0.0126619524 0.0 0.0 0.0122716055 0.0 0.0 0.0119240615 0.0 0.0\n2.8980740435 0.0 0.0 2.9224417792 0.0 0.0 2.9449901605 0.0 0.0\n0.1569375956 0.0 0.0 0.1546671493 0.0 0.0 0.1526119469 0.0 0.0\n'], dtype='|S216')
由于text_file.read().split(',')
读取整个文件(包括换行符),因此最终会得到一个包含文件中所有字符的大字符串。然后将字符串拆分为(不存在的)','
,它返回字符串本身。