有人知道如何在Python中从多维数组中提取列吗?


当前回答

def get_col(arr, col):
    return map(lambda x : x[col], arr)

a = [[1,2,3,4], [5,6,7,8], [9,10,11,12],[13,14,15,16]]

print get_col(a, 3)

Python中的map函数是另一种方法。

其他回答

def get_col(arr, col):
    return map(lambda x : x[col], arr)

a = [[1,2,3,4], [5,6,7,8], [9,10,11,12],[13,14,15,16]]

print get_col(a, 3)

Python中的map函数是另一种方法。

我认为你想从一个数组中提取一个列,比如下面的数组

import numpy as np
A = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])

现在如果你想要得到格式中的第三列

D=array[[3],
[7],
[11]]

然后你需要首先把数组变成一个矩阵

B=np.asmatrix(A)
C=B[:,2]
D=asarray(C)

现在你可以做基于元素的计算就像你在excel中做的一样。

所有列从一个矩阵到一个新的列表:

N = len(matrix) 
column_list = [ [matrix[row][column] for row in range(N)] for column in range(N) ]

另一种使用矩阵的方法

>>> from numpy import matrix
>>> a = [ [1,2,3],[4,5,6],[7,8,9] ]
>>> matrix(a).transpose()[1].getA()[0]
array([2, 5, 8])
>>> matrix(a).transpose()[0].getA()[0]
array([1, 4, 7])

你也可以用这个:

values = np.array([[1,2,3],[4,5,6]])
values[...,0] # first column
#[1,4]

注意:这对于内置数组和未对齐的数组无效(例如np.array([[1,2,3],[4,5,6,7]]))