字符串列表到整数数组

从字符串列表中,像这样:


example_list = ['010','101']

我需要得到一个整数数组,其中每一行都是一个字符串,是一列中的每个字符,如下所示:


example_array = np.array([[0,1,0],[1,0,1]])

我已尝试使用此代码,但它不起作用:


example_array = np.empty([2,3],dtype=int)    

i = 0 ; j = 0


for string in example_list:

    for bit in string:

        example_array[i,j] = int(bit)

        j+=1

    i+=1

谁能帮我?我正在使用 Python 3.6。


预先感谢您的帮助!


蛊毒传说
浏览 187回答 3
3回答

茅侃侃

如果所有字符串的长度相同(这对于构建连续数组至关重要),则使用view来有效地分隔字符。r = np.array(example_list)r = r.view('<U1').reshape(*r.shape, -1).astype(int)print(r)array([[0, 1, 0],&nbsp; &nbsp; &nbsp; &nbsp;[1, 0, 1]])你也可以走列表理解路线。r = np.array([[*map(int, list(l))] for l in example_list])print(r)array([[0, 1, 0],&nbsp; &nbsp; &nbsp; &nbsp;[1, 0, 1]])

慕标5832272

你可以这样做map:example_array&nbsp;=&nbsp;map(lambda&nbsp;x:&nbsp;map(lambda&nbsp;y:&nbsp;int(y),&nbsp;list(x)),&nbsp;example_list)外部对 中的每个项目lambda执行list(x)操作example_list。例如,'010' => ['0','1','0']。内部lambda将单个字符(来自 的结果list(x))转换为整数。例如,['0','1','0'] => [0,1,0]。

LEATH

最简单的方法是使用列表推导式,因为它会自动为您生成输出列表,可以轻松地将其转换为 numpy 数组。您可以使用多个 for 循环来执行此操作,但随后您就无法创建列表、子列表并附加到它们。虽然不难,但使用列表推导式的代码看起来更优雅。试试这个:newList = np.array([[int(b) for b in a] for a in example_list])newList 现在看起来像这样:>>> newList&nbsp;... [[0, 1, 0], [1, 0, 1]]注意:此时不需要调用 map,尽管这确实有效。那么这里发生了什么?我们正在逐项遍历您的原始字符串列表 (example_list),然后遍历当前项中的每个字符。在功能上,这相当于...newList = []for a in example_list:&nbsp; &nbsp; tmpList = []&nbsp; &nbsp; for b in a:&nbsp; &nbsp; &nbsp; &nbsp; tmpList.append(int(b))&nbsp; &nbsp; newList.append(tmpList)newList = np.array(newList)就个人而言,我发现多个 for 循环对于初学者来说更容易理解。然而,一旦你掌握了列表推导式,你可能就不想回去了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python