将字符串数组转换为二维 numpy 数组

Convert string array into 2D numpy array

我遇到了一个奇怪的问题。 我有两个东西,m 和 mhat:

m
    [[1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1
      0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0]
     [1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0
      0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 0]]
    Mhat
    ['1' '1' '0' '1' '1' '1' '1' '1' '1' '1' '1' '0' '0' '1' '0' '0' '1' '0'
     '1' '0' '1' '0' '1' '0' '1' '0' '1' '1' '0' '1' '0' '1' '0' '0' '0' '0'
     '1' '0' '1' '1' '0' '1' '0' '1' '0' '1' '0' '1' '0' '0' '1' '0' '0' '0'
     '1' '0' '0' '1' '0' '1' '1' '1' '1' '0' '0' '1' '0' '1' '1' '1' '1' '0'
     '0' '0' '0' '1' '0' '1' '0' '0' '1' '1' '1' '1' '1' '1' '0' '1' '1' '1'
     '0' '0' '0' '0' '0' '1' '0' '1' '0' '1' '0' '0' '0' '0']

m 是一个带有 n 行的整数的 numpy 数组,而 mhat 是一个一维的 numpy 数组,充满了字符串。 正如您所见,在 mhat 中,元素与 m 中的相同,但具有交替索引。 因此,mhat[0] 是第一行的第一个元素,mhat[1] 是第二行的第一个元素,mhat[2] 是第一行的第二个元素,依此类推。

我想转换 mhat 以便我可以比较它们。 我现在有 30 行奇怪的对话,表现很糟糕,但仍然不正确,所以我放弃了它。 有没有人对此有绝妙的想法?

这应该有效:

l1 = [[1,2,3],[4,5,6]]
l2 = [1,4,2,5,3,6]


cols = 2
newl = [[] for x in range(cols)]
for i in range(int(len(l2)/cols)):
    for j in range(cols):
        newl[j].append(l2[i*cols + j])

我没有将字符串转换为浮点数,但 newl 将采用 l1 的格式,然后您可以继续进行比较。