繁体   English   中英

Python:如何将具有多个数字的多个列表转换为数组?

[英]Python: How to convert multiple list that have multiple digits into array?

我有一个文本文件,其中列出了4 x 3个二进制值,例如:

1 0 1
0 0 1
1 1 0
0 0 1

当我在python中读取此文件时,它的格式如下:

import numpy as np
with open("test.txt")as g:
    p=g.read().splitlines()
    q=[];
    for m in p:
        q.append(int(m));
    p=q;

Python视窗:

>>> p
['1 0 1', '0 0 1', '1 1 0', '0 0 1']

如何将其转换为数组:

array([[ 1.0,  0.0,  1.0],
   [ 0.0,  0.0,  1.0],
   [ 1.0,  1.0,  0.0],
   [ 0.0,  0.0,  1.0]])

到目前为止,最简单的解决方案是跳过读取您自己的文件并将行转换为列表列表的所有中间步骤,而只需使用numpy.loadtxt()即可 默认情况下,这些值将为浮点类型,因此您无需执行任何其他操作。

import numpy as np

dat = np.loadtxt('test.txt')

您可以遍历p每一line ,将字符串拆分为单独的数字,最后将每个子字符串转换为float

import numpy as np

p = ['1 0 1', '0 0 1', '1 1 0', '0 0 1']
print np.array([map(float, line.split()) for line in p])

输出:

[[ 1.  0.  1.]
 [ 0.  0.  1.]
 [ 1.  1.  0.]
 [ 0.  0.  1.]]

假设您保证输入足够合理,则可以拆分字符串并将片段转换为int

def str2ints(l):
    return [int(frag) for frag in l.split()]

此函数占用一行并将其拆分为多个部分,将fx "1 0 1"拆分为["1", "0", "1"]然后使用列表推导并将片段转换为int。

您可以在整个p上使用更多列表理解功能:

[str2ints(l) for l in p]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM