2

我有一个表格中的行列表:

"a, b, c, d, e ... z,"

其中第一个 x 需要保存为一个二维数组中的一行,该行的其余部分保存为另一个二维数组中的一行。

现在,如果这是在 C/C++ 或 Java 中,那将很容易,我可以在几秒钟内完成。但我还没有 100% 习惯 python。但是例如给定一个数组,例如:

['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6']

并被告知必须将第一个数组中的 2 列拆分为第二个数组中的 2 我如何将该列表转换为以下两个 numpy 数组:

[[1, 2]
 [2, 3]
 [1, 1]]

和:

[[4, 5]
 [6, 3]
 [7, 6]]

同样出于我自己的理解,为什么我不能/不应该遍历嵌套 for 循环中的每个元素并一个一个地覆盖它们。我不明白为什么当我尝试这些值与复制的内容不匹配时。

作为参考,我尝试过的代码:

    self.inputs=np.zeros((len(data), self.numIn))
    self.outputs=np.zeros((len(data),self.numOut))
    lineIndex=0
    for line in data:
        d=line.split(',')

        for i in range(self.numIn):
            self.inputs[lineIndex][i]=d[i]
            print d[i],
            self.inputs.index()
        for j in range(self.numOut):
            self.inputs[lineIndex][j]=d[self.numIn+j]
        lineIndex+=1

我想在 python/numpy 中创建一个包含所有值的 numpy 数组然后将其拆分为两个单独的数组可能会更容易。如果这样做更容易帮助,将不胜感激。(我建议可能的解决方案真是太好了!:P)

4

1 回答 1

3

我同意最后一点:

我想在 python/numpy 中创建一个包含所有值的 numpy 数组然后将其拆分为两个单独的数组可能会更容易。如果这样做更容易帮助,将不胜感激。(我建议可能的解决方案真是太好了!:P)

您可以剥离(以删除尾随逗号)并拆分(以分解为单个字符的列表)列表推导中的每个字符串以获取行列表

a = ['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6']
rows = [l.rstrip(',').split(',') for l in a]
rows
#[['1', ' 2', ' 4', ' 5'], ['2', ' 3', ' 6', ' 3'], ['1', ' 1', ' 7', ' 6']]

然后将其转换为整数数组:

arr = np.array(rows, int)

arr
#array([[1, 2, 4, 5],
#       [2, 3, 6, 3],
#       [1, 1, 7, 6]])

要获得两半:

arr[:, :2] # first two columns
#array([[1, 2],
#       [2, 3],
#       [1, 1]])

arr[:, -2:] # last two columns
#array([[4, 5],
#       [6, 3],
#       [7, 6]])

或者,返回两个数组:

a, b = np.split(arr, arr.shape[1]/2, axis=1)
于 2013-11-12T20:09:29.563 回答