Why does python think my array is 0-d? (TypeError: iteration over a 0-d array)

Why does python think my array is 0-d? (TypeError: iteration over a 0-d array)

我知道之前可能已经回答过这个问题,但是请检查其他答案是否与此实例相关!

我正在将数组作为字符串写入文件,以便在我的脚本未 运行ning 时存储它,并在 运行 时轻松再次访问它。当我再次从文件中读取该字符串时,它会自动读取为字符串。

我可以使用循环遍历保存的字符串并将每个条目附加到一个空数组的 for 循环来解决这个问题,但这似乎有点过分了 - 是吗?有没有更好的方法来读取字符串并将其转换为数组?

所以...像这样的东西 运行s 第一次为了生成数组并将其作为字符串写入文件:

the_file = open('.the_file.txt', 'w')
the_array = [10, 20, 30, 40, 50]
the_file.write(str(the_array))
the_file.close()

下次代码是 运行 时,代码的不同部分会变成 运行,就像这样:

the_file = open('.the_file.txt', 'r')
the_array = the_file.read()
the_file.close()

如果此时打印 the_array 变量及其类型,我将得到:

[10, 20, 30, 40, 50]
<type 'str'>

所以我遵循 this similar question here 中给出的建议并执行:

the_array = np.asarray(the_array)

...然后在此时打印 the_array 变量及其类型以检查这是否有效,得到:

[10, 20, 30, 40, 50]
<type 'numpy.ndarray'>

但是现在当我 运行 我的其余代码时,我得到了错误:

TypeError: iteration over a 0-d array

追溯到我的这部分代码:

the_array = sorted(the_array, reverse=True)

谁能帮我解决这个问题;为什么 python 认为我的数组是 0-d?

the_array = np.asarray(the_array) 正在创建一个数组,其中包含一个元素:您的字符串 "[10, 20, 30, 40, 50]"。如果你 import json 并将 the_array = the_file.read() 替换为 the_array = json.load(the_file),而不是读入你的文件,你将得到一个列表,并且可以轻松地将它转换为一个 numpy 数组。