为了账号安全,请及时绑定邮箱和手机立即绑定

字符串列表到整数数组

字符串列表到整数数组

蛊毒传说 2021-07-15 18:11:34
从字符串列表中,像这样: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 = 0for string in example_list:    for bit in string:        example_array[i,j] = int(bit)        j+=1    i+=1谁能帮我?我正在使用 Python 3.6。预先感谢您的帮助!
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

如果所有字符串的长度相同(这对于构建连续数组至关重要),则使用view来有效地分隔字符。


r = np.array(example_list)

r = r.view('<U1').reshape(*r.shape, -1).astype(int)


print(r)

array([[0, 1, 0],

       [1, 0, 1]])

你也可以走列表理解路线。


r = np.array([[*map(int, list(l))] for l in example_list])


print(r)

array([[0, 1, 0],

       [1, 0, 1]])


查看完整回答
反对 回复 2021-07-27
?
慕标5832272

TA贡献1966条经验 获得超4个赞

你可以这样做map

example_array = map(lambda x: map(lambda y: int(y), list(x)), example_list)

外部对 中的每个项目lambda执行list(x)操作example_list。例如,'010' => ['0','1','0']。内部lambda将单个字符(来自 的结果list(x))转换为整数。例如,['0','1','0'] => [0,1,0]


查看完整回答
反对 回复 2021-07-27
?
LEATH

TA贡献1936条经验 获得超6个赞

最简单的方法是使用列表推导式,因为它会自动为您生成输出列表,可以轻松地将其转换为 numpy 数组。您可以使用多个 for 循环来执行此操作,但随后您就无法创建列表、子列表并附加到它们。虽然不难,但使用列表推导式的代码看起来更优雅。


试试这个:


newList = np.array([[int(b) for b in a] for a in example_list])

newList 现在看起来像这样:


>>> newList

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

注意:此时不需要调用 map,尽管这确实有效。


那么这里发生了什么?我们正在逐项遍历您的原始字符串列表 (example_list),然后遍历当前项中的每个字符。在功能上,这相当于...


newList = []


for a in example_list:

    tmpList = []

    for b in a:

        tmpList.append(int(b))

    newList.append(tmpList)


newList = np.array(newList)

就个人而言,我发现多个 for 循环对于初学者来说更容易理解。然而,一旦你掌握了列表推导式,你可能就不想回去了。


查看完整回答
反对 回复 2021-07-27
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信