Python 将列表或数组列表转换为nxn二进制矩阵

Python 将列表或数组列表转换为nxn二进制矩阵,python,Python,好的,我需要采用以下格式的输入文件 5 5 12 1 1 1 2 2 1 2 3 3 1 3 2 3 4 4 2 4 4 1 2 2 3 5 5 然后将其转换为一个矩阵,其中左侧列表示客户ID,右侧列表示项目ID 我可以让Python导入数据,但是我很难按照需要的方式操作它 我需要这些数据的例子如下: Item 1 Item 2 Item 3 Customer1: 1 2 0 Customer2: 1 0

好的,我需要采用以下格式的输入文件

5 5 12
1 1
1 2
2 1
2 3
3 1
3 2
3 4
4 2
4 4
1 2
2 3
5 5
然后将其转换为一个矩阵,其中左侧列表示客户ID,右侧列表示项目ID

我可以让Python导入数据,但是我很难按照需要的方式操作它

我需要这些数据的例子如下:

          Item 1   Item 2  Item 3
Customer1:  1        2       0    
Customer2:  1        0       2
以下是我用来导入数据的方法:

def DataImport(filename):

    Data = []
    with open(filename) as f:
        for line in f:
            Data.append([int(v) for v in line.split()])
    return Data
(不完整)

我认为numpy方法以一种最容易使用的方式呈现,但我不确定如何让Python使用customerID作为键,然后以前面提到的方式添加值


我不确定我是否解释得很好,但如果你需要更多的澄清,我可以回答你的问题

原则上,我强烈建议使用PANDAS()之类的东西,尤其是

pandas.read_tabel 
将生成一个数据帧,您可以根据自己的喜好进行操作。 然而,如果您不喜欢,您也可以通过简单地使用

for row in matrix.T:
  instructions for rows...
不如

for col in matrix:
  instructions for columns...

希望有帮助。

示例的第一行有
5 12
,其余的只有两个条目。通常,您是否希望
项目1项目2项目3
,因为第一行有三个条目?那么剩下的项目3的
0
?您的示例输入需要更清楚地链接到所需的输出。您要查找的内容不明显。我想您要查找的是输入行中不存在的列的默认值?第一行是不同的数据,很抱歉,我忘了提及,这是第一行之后的所有内容。
for col in matrix:
  instructions for columns...