有人知道如何在Python中从多维数组中提取列吗?
当前回答
[matrix[i][column] for i in range(len(matrix))]
其他回答
你也可以用这个:
values = np.array([[1,2,3],[4,5,6]])
values[...,0] # first column
#[1,4]
注意:这对于内置数组和未对齐的数组无效(例如np.array([[1,2,3],[4,5,6,7]]))
如果你喜欢map-reduce风格的python, itemgetter操作符也会有帮助,而不是列表推导式,为了一点变化!
# tested in 2.4
from operator import itemgetter
def column(matrix,i):
f = itemgetter(i)
return map(f,matrix)
M = [range(x,x+5) for x in range(10)]
assert column(M,1) == range(1,11)
如果你有一个数组
a = [[1, 2], [2, 3], [3, 4]]
然后像这样提取第一列:
[row[0] for row in a]
结果是这样的:
[1, 2, 3]
只要使用转置(),就可以像求行一样简单地求列
matrix=np.array(originalMatrix).transpose()
print matrix[NumberOfColumns]
如果你在Python中有一个二维数组(不是numpy),你可以像这样提取所有的列,
data = [
['a', 1, 2],
['b', 3, 4],
['c', 5, 6]
]
columns = list(zip(*data))
print("column[0] = {}".format(columns[0]))
print("column[1] = {}".format(columns[1]))
print("column[2] = {}".format(columns[2]))
执行这段代码会得到,
>>> print("column[0] = {}".format(columns[0]))
column[0] = ('a', 'b', 'c')
>>> print("column[1] = {}".format(columns[1]))
column[1] = (1, 3, 5)
>>> print("column[2] = {}".format(columns[2]))
column[2] = (2, 4, 6)