将数据拆分为列并将其存储为二维数组

Posted

技术标签:

【中文标题】将数据拆分为列并将其存储为二维数组【英文标题】:Split data in columns and store it as two dimensional array 【发布时间】:2018-10-06 03:03:49 【问题描述】:

我有一个这种形式的数据:

49907 87063
42003 51519
21301 46100
97578 26010
52364 86618
25783 71775
1617 29096
2662 47428
74888 54550
17182 35976
86973 5323

......

我需要像for line in file一样在最后遍历它。

我想将它们拆分为第一列值存储在数组一中,第二列值存储在数组二中,所以每当我调用 Array_one[0], Array_two[0] 时,我都会得到第一行值,如 49907 87063 和其他值相同。

【问题讨论】:

left_col, right_col = np.loadtxt(<your_file>, unpack=True) 【参考方案1】:

您可以使用空格作为分隔符。

例如:

import pandas as pd
df = pd.read_csv(filename, sep="\s+", names = ["A", "B"])
print(df["A"][0])
print(df["B"][0])

输出:

49907
87063

for i in df.values:
    print(i)

输出

[49907 87063]
[42003 51519]
[21301 46100]
[97578 26010]
[52364 86618]
[25783 71775]
[ 1617 29096]
[ 2662 47428]
[74888 54550]
[17182 35976]
[86973  5323]

【讨论】:

我也不明白,是个错误 @jezrael 我可以添加一个像 A[counter] 这样的计数器吗?? @MuhammadHassan - 我认为最好的方法是创建有问题的预期输出......而且我相信Rakesh 会给你很好的答案:) 所以没有理由拒绝投票?,签名...我只能帮助一点点。 for i in df.values: func(i[0], i[1])【参考方案2】:

您可以使用numpy.genfromtxt 直接提取到numpy 数组中:

A = np.genfromtxt(file, dtype=int)

空格是默认分隔符。

然后您可以使用标准的numpy 索引/切片:

提取第一行:A[0];第二栏:A[:, 1]。 要提取第一行的第一个元素:A[0, 0]。 提取第二列的第一个元素:A[0, 1]

逐行迭代整个数组:

for i in range(A.shape[0]):
    print(A[i])

【讨论】:

你能添加第二列B吗,因为我需要将这些值逐行放入函数中,作为参数,如函数(column1,column2) 我还是不清楚,我想把这两个值分别作为函数的参数,比如 fun(column1 , column2) ,它有一个循环,直到 4000 行......跨度> 我建议你阅读numpyindexing docs。不幸的是,没有关于 SO 的教程。

以上是关于将数据拆分为列并将其存储为二维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .t​​xt 中提取文本并将其存储到动态二维数组中?

将 byte[] 转换为原始二维数组

PHP 统计一维数组value同样的元素的个数num,并将其转化为下标为数字,值是value和num的二维数组

Python:将二进制文件解压缩成二维数组并给出长度错误

5.2多重循环和二维数组

LEETCODE刷题 二维数组查找