python - numpy loadtxt 不会产生数组

标签 python arrays numpy

似乎因为一个简单的问题而碰壁了。我正在尝试读取文件中的数组。这些列是整数和字符串的混合;只对第 0、2、3 列感兴趣。

import numpy as np
network = np.loadtxt('temp.biflows',skiprows=1, usecols=(0,2,3), delimiter = '\t', dtype=[('ts','i10'), ('sndr','|S14'), ('recr', '|S14')]) 
print network.shape

输入文件的样本;列由制表符分隔 \t:

1441087368  1441087365  186.251.68.208  186.251.68.145  17  137 137 3   0   150 0
1441087342  1441087341  125.144.214.126 125.144.195.105 17  137 137 2   0   100 0
1441087370  1441087370  186.251.139.178 170.85.175.203  17  35905   161 2   2   760 850

实际上有 30104 行。网络的最终形状为 network.shape = (30104,)。我正在寻找的是网络是一个形状为 (30104,3) 的数组。

FWIW我的目标是根据第一列(时间戳)对行进行排序。

任何有关我可能做错的事情的建议将不胜感激(以及如何进行排序的建议)。

最佳答案

您无法创建形状为 (n, 3) 的 numpy 数组,其中每列都有不同的类型。您可以创建什么(以及将loadtxtdtype=[('ts','i10'), ('sndr',' |S14'), ('recr', '|S14')]) 是创建一个结构化数组,数组中的每个元素都是由多个字段组成的结构体。在您的情况下,您有三个字段:一个是整数,两个是字符串。 loadtxt 创建的数组是一个一维数组。数组中的每个元素都是一个具有三个字段的结构。您可以通过 network['ts']network['sndr']network[' 访问字段(您可以将其解释为“列”) recr']

参见http://docs.scipy.org/doc/numpy/user/basics.rec.html了解更多信息。这里可能也有很多关于 SO 的相关信息。例如,Access Columns of Numpy Array? Errors Trying to Do by Transpose or by Column Access

关于python - numpy loadtxt 不会产生数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32503945/

相关文章:

ruby-on-rails - 选择在数组属性中包含值的 Rails 对象

sql - 无法将字段创建转换为 bigint

python - scipy.ndimage.filters.convolve - 沿不同轴的不同模式?

python - 从 Scipy 矩阵创建列表

python - 如何使算法更快?

Python 2.6 - 解析参数

php - 从 MySQL PDO 回显数组

python - 在 Lubuntu 14.04 上安装 Python3.4.3 时出现错误/测试失败

python - 在 Python 中移动 Seaborn 图中的图例

python - 如何根据另一列的值在 Pandas 数据框列中创建新值