【问题标题】:Why does python think my array is 0-d? (TypeError: iteration over a 0-d array) [duplicate]为什么python认为我的数组是0-d? (TypeError:迭代 0-d 数组)[重复]
【发布时间】:2016-08-03 09:50:43
【问题描述】:

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

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

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

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

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?

【问题讨论】:

  • np.asarray 不解析字符串。
  • 这就解释了;谢谢 - 我很确定我也知道...

标签: python arrays numpy iteration sorted


【解决方案1】:

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 数组。

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多