python将二维读入一维数组

标签 python python-2.7 numpy

我有一个 2D txt 文件:

[[1406], [1408], [1402], [1394, 102462], [1393], [20388], [20387, 20386], [1386], [1443, 1446, 766], [1432, 1438, 1430, 1416], [1442], [1434], [1430, 1416, 1417, 1419, 3446], [1429], [20011], [20015], [4435], [4441], [4443], [4444], [4448], [2433, 1413, 1418], [4450], [3444], [2478, 823, 3447], [3447], [2481, 1425, 942, 2476, 4449], [2482, 120, 3444], [13512], [3446], [13528]]

有什么方法可以将这个文件读入 python? 我试过:

from numpy import genfromtxt
con2 = genfromtxt('muti.txt', delimiter=',')
con2 = con2.astype(np.int64)

结果如下:

nan
nan
nan
nan
nan
nan
nan
1413.0
nan
nan
nan
nan
823.0
nan
nan
nan
1425.0
942.0
2476.0
nan
nan
120.0
nan
nan
nan
nan

数组中有很多 nan。有人可以帮我吗?

最佳答案

我不知道 numpy 对此有什么功能,但由于您的文本文件恰好是有效的 JSON,您可以将其作为 JSON 加载,展平,然后将结果转换为 numpy 数组。

>>> import json
>>> import numpy as np
>>> with open('muti.txt', 'r') as f: arr = json.load(f)
>>> np_arr = np.array([n for subarr in arr for n in subarr]).astype(np.int64)
>>> np_arr
array([  1406,   1408,   1402,   1394, 102462,   1393,  20388,  20387,
        20386,   1386,   1443,   1446,    766,   1432,   1438,   1430,
         1416,   1442,   1434,   1430,   1416,   1417,   1419,   3446,
         1429,  20011,  20015,   4435,   4441,   4443,   4444,   4448,
         2433,   1413,   1418,   4450,   3444,   2478,    823,   3447,
         3447,   2481,   1425,    942,   2476,   4449,   2482,    120,
         3444,  13512,   3446,  13528], dtype=int64)

关于python将二维读入一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298482/

相关文章:

python - 在 Cython 中使用来自不同库的结构

python - tuple(aValidTupleOfTypeString) 没有返回我期望的结果

python - 如何使用给定坐标在图像中绘制一个点

python - 当Python中簇数为2时,我的图没有显示结果

python-具有阶跃响应的卷积

python - 如何根据具有两个键值对的字典列表中的另一个 k-v 对的值从一个键值对创建值列表

python - 在 json 输出中转义正斜杠

python - 如何指定一个变量作为类或类实例的成员变量?

在线法官中来自 stdin 的 Python 输入

mysql - 如何在 mysql 的 python 列表中指定用于字符串的引号?