python'矩阵'问题

时间:2011-03-26 20:34:53

标签: python matrix row

我有输入数据(test.data)

4.5,3.5,U1
4.5,10.5,U2
4.5,6,U1
3.5,10.5,U2
3.5,10.5,U2
5,7,U1
7,6.5,U1

代码我:

import csv

reader = csv.reader(open('test.data', 'r'))
result = {}
for row in reader:
    uclass=row[-1]
    if result.has_key(uclass):
        result[uclass].append(row[:-1])
    else:
        result[uclass] = row[:-1]
print result

现在我的输出是:

'U1': 
[['4.5', '3.5]', 
['4.5', '6'], 
['5', '7'], 
['7', '6.5'], 

'U2': 
[['4.5', '10.5'], 
['3.5', '10.5'], 
['3.5', '10.5']]

其中U1和U2 ....是等级


现在有我的问题: 我怎样才能使 for循环(或其他任何东西),我可以在这里调用这个U1,U2,....(我的数据类)并接收数据。

在这种情况下,我喜欢做什么:

first1 = 1/3 * U1 (1/3 of data U1) = ?
first2 = 1/3 * U2 (1/3 of data U2) = ?
second1 = 2/3 * U2 (2/3 of data U1) = ?
second2 = 2/3 * U2 (2/3 of data U2) = ?

我需要这个矩阵(first1,first2,second1,second2)进行下一次计算......

2 个答案:

答案 0 :(得分:2)

在编程中,如果你不知道如何做某事,可以把它分成小块。我并不完全清楚你想要什么,所以我将假设以下内容。

你有一个清单

x = [4.5, 6.9, 7.5, 9.2, ...]

您需要一个新列表,该列表占据该列表的前三分之一。但你不知道该怎么做。所以打破它。那你怎么这样?让我们从一系列说明开始。

  1. 创建列表y
  2. 取x中的第一项并将其放入y
  3. 取x中的第二项并将其放入y
  4. 取x中的第三项并将其放入y
  5. 当y包含x
  6. 中的前三分之一时停止

    然后尝试按照说明操作。首先,我们如何在python中创建一个空列表?

    y = []
    

    接下来,我们需要在一堆不同的时间重复基本相同的事情。我们如何在python中多次重复相同的操作?

    for idx in range(number of times to repeat):
    

    好的,但我们需要重复多少次?显然,你想重复它的长度的三分之一。我们如何解决这个问题?再次,解决问题并将其分解为步骤

    1. 找到x的长度
    2. 将该长度除以3
    3. 我们如何在python中找到某些东西的长度?

      len(x)
      

      我们如何除以三?

      len(x) // 3
      

      好的,回到循环

      for idx in range( len(x) // 3 ):
      

      现在,如何从x中取出idx元素并将其放入y?再次,让我们分解为步骤:

      1. 获取x
      2. 的idxth元素
      3. 将该元素添加到y
      4. 我们如何在python中获取列表的idxth元素?

        x[idx]
        

        我们如何向列表添加内容

        y.append( object to add )
        

        将它们结合起来:

        y.append( x[idx] )
        

        因此我们有最终的代码:

        y = []
        for idx in range( len(x) // 3 ):
            y.append( x[idx] )
        

        在编程中,您需要能够将问题分解为您知道如何解决的问题。如果你不能这样做,你可能会尝试超出技能水平的东西。如果您不知道如何执行简单任务或建议更好地完成您所拥有的任务,我们很乐意提供帮助。

        不幸的是,你的案例看起来像是一个在不了解代码功能的情况下收集魔法代码的人。我无法读懂你的想法,我不知道这是不是真的。但是如果你需要帮助,你将需要展示你所尝试过的东西。例子包括:

        1. 您编写的代码未执行您想要的操作
        2. 您读到的不明白的文档
        3. 讨论将问题分解为较小问题的尝试
        4. 我更愿意帮助一个初学者。我曾经是一个人。我没有像Stack Overflow这样的资源,不得不自己解决所有问题。我今天的编码能力可能很好,因为没有人给我答案。我们很高兴在遇到困难时帮助你,但是你似乎被困住了,那么你正在移动,这是真正的问题。

          你一直在向我们询问鱼类,你需要学会捕鱼。

答案 1 :(得分:0)

我不知道你的目标究竟是什么,但我认为你应该让你的花车适当类型

import csv
reader = csv.reader(open('test.data', 'r'))
result = {}
for row in reader:
    uclass, values = row[-1], [float(item) for item in  row[:-1]]
    if uclass in result:
        result[uclass].append(values)
    else:
        result[uclass] = [values]
print(result)