Python循环遍历文本并设置numpy数组索引

Python循环遍历文本并设置numpy数组索引,python,numpy,Python,Numpy,给定一个包含由逗号和分号分隔的矩阵行和列的文本块,我想解析文本并设置numpy数组的索引。下面是代码,其中变量“matrixText”表示基本文本 我首先创建矩阵,然后用分号和逗号分割文本。我循环浏览拆分的文本并设置每个索引。然而,在文本中 1,2,3;4,5,6;7,8,9 我得到了结果 7,7,7,;8,8,8;9,9,9 temp1=matrixText.split(';') temp2=temp1[0].split(',') rows=len(temp1) columns=len(tem

给定一个包含由逗号和分号分隔的矩阵行和列的文本块,我想解析文本并设置numpy数组的索引。下面是代码,其中变量“matrixText”表示基本文本

我首先创建矩阵,然后用分号和逗号分割文本。我循环浏览拆分的文本并设置每个索引。然而,在文本中

1,2,3;4,5,6;7,8,9

我得到了结果

7,7,7,;8,8,8;9,9,9

temp1=matrixText.split(';')
temp2=temp1[0].split(',')
rows=len(temp1)
columns=len(temp2)
rA=np.zeros((rows, columns))
arrayText=matrixText.split(';')
rowText=range(len(arrayText))
for rowIndex, rowItem in enumerate(arrayText):
    rowText[rowIndex]=arrayText[rowIndex].split(',')
    for colIndex, colItem in enumerate(rowText[rowIndex]):
        rA[[rowIndex, colIndex]]=rowText[rowIndex][colIndex]
我认为通过设置每个索引,我可以避免任何引用复制的问题

为了提供更多信息,在第一次迭代中,将0,0索引设置为1,然后该索引的输出为1,1,1;0,0,0;因为在numpy数组中设置一个索引将设置三个,所以我无法计算出0,0,0

在第二次迭代中,将索引0-1设置为2,结果为2,2,2;2,2,2;0,0,0

第三次迭代将0-2设置为3,但结果是3,3,3;2,2,2;3,3,3


有什么建议吗?

使用嵌套的
列表理解:

matrixText = '1,2,3;4,5,6;7,8,9'
temp1=matrixText.split(';')
temp2=temp1[0].split(',')
rows=len(temp1)
columns=len(temp2)
rA=np.empty((rows, columns),dtype=np.int)
for n, line in enumerate(temp1):         
    rA[n,:]=line.split(',')
确定了:

s = "1,2,3;4,5,6;7,8,9"
我们可以使用一个漂亮的
一行程序

np.array([[int(c) for c in r.split(",")] for r in s.split(";")])
这将给出以下
数组

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
另一艘班轮(+1艘进口):

您可以(ab-)使用
矩阵
构造函数和
A
属性

np.matrix('1,2,3;4,5,6;7,8,9').A
输出:

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

因此,这里的问题是rA[[rowIndex,colIndex]]中的双括号导致设置行中的每个单元格。这应该是rA[rowIndex,colIndex]

为什么不使用?它不是来自文件,我真的需要解决这个问题,因为我担心我可能有相关问题一些冗余代码。。。例如,为什么要使用
arrayText=matrixText.split(“;”)
temp1
是否与
arrayText
相同?我只是想说明我使用了拆分的大小来创建一个“空”numpy数组,然后设置每个索引。问题在于某个地方引用的明显设置。
iA
用于什么?UV!我真的很喜欢这个@是的,
矩阵
类并非完全无用;-)
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])