<p>您可以使用<a href="http://www.numpy.org" rel="nofollow">Numpy</a>(希望您不喜欢这样):</p>
<pre><code>import numpy
dataset2D = [ [6, 4], [0, 0, 0, 1], [1, 0, 2, 0], [2, 2, 0, 1], [1, 1, 1, 0], [0, 0, 1, 1], [1, 0, 2, 1] ]
dataset2D_size = dataset2D[0]
dataset2D = numpy.array(dataset2D)
partition2D = [ ['A', '1', '2', '4'], ['B', '3', '5'], ['C', '6'] ]
for partition in partition2D:
label = partition[0]
row_indices = [int(i) for i in partition[1:]]
# Take the specified rows
rows = dataset2D[row_indices]
# Iterate the columns (this is the power of Python!)
for column in zip(*rows):
# Now, column will contain one column of data from specified row indices
print column, # Apply your formula here
print
</code></pre>
<p>或者<strong>如果您不想安装Numpy</strong>,下面是您可以做的(实际上这是您想要的):</p>
^{pr2}$
<p>两者都将打印:</p>
<pre>
(0, 1, 1) (0, 0, 1) (0, 2, 1) (1, 0, 0)
(2, 0) (2, 0) (0, 1) (1, 1)
(1,) (0,) (2,) (1,)
</pre>
<p><strong>第二个代码的说明(无数字)</strong>:</p>
<pre><code>[dataset2D[row_idx] for row_idx in row_indices]
</code></pre>
<p>这基本上是将每一行(<code>dataset2D[row_idx]</code>)作为一个列表整理在一起。所以这个表达式的结果是一个列表列表(来自指定的行索引)</p>
<pre><code>for column in zip(*rows):
</code></pre>
<p>然后<code>zip(*rows)</code>将<strong>按列迭代</strong>(您想要的那个)。这是通过获取每行的第一个元素,然后将它们组合在一起形成一个<a href="http://docs.python.org/release/1.5.1p1/tut/tuples.html" rel="nofollow">tuple</a>。在每次迭代中,结果存储在变量<code>column</code>中。在</p>
<p>那么在<code>for column in zip(*rows):</code>中,已经有了指定行中预期的按列迭代的元素!在</p>
<p>要应用公式,只需将<code>print column,</code>改成你想做的事情。例如,我修改代码以包含行和列号:</p>
<pre><code>print 'Processing partition %s' % label
for (col_num, column) in enumerate(zip(*rows)):
print 'Column number: %d' % col_num
for (row_num, element) in enumerate(column):
print '[%d,%d]: %d' % (row_indices[row_num], col_num, element)
</code></pre>
<p>这将导致:</p>
<pre>
Processing partition A
Column number: 0
[1,0]: 0
[2,0]: 1
[4,0]: 1
Column number: 1
[1,1]: 0
[2,1]: 0
[4,1]: 1
Column number: 2
[1,2]: 0
[2,2]: 2
[4,2]: 1
Column number: 3
[1,3]: 1
[2,3]: 0
[4,3]: 0
Processing partition B
Column number: 0
[3,0]: 2
[5,0]: 0
Column number: 1
[3,1]: 2
[5,1]: 0
Column number: 2
[3,2]: 0
[5,2]: 1
Column number: 3
[3,3]: 1
[5,3]: 1
Processing partition C
Column number: 0
[6,0]: 1
Column number: 1
[6,1]: 0
Column number: 2
[6,3]: 2
Column number: 3
[6,3]: 1
</pre>
<p>我希望这有帮助。在</p>