numpy tolist()不舒服的输出

时间:2017-03-27 22:53:54

标签: python list numpy tolist

我正在尝试以列表形式提取numpy矩阵的列。我使用了方法tolist(),但它对我的目的没用。 我们来看看代码。

import numpy as np
def get_values(feature):
    '''
    This method creates a lst of all values in a feature, without repetitions
    :param feature: the feature of which we want to extract values
    :return: lst of the values
    '''
    values = []
    for i in feature:
        if i not in values:
            values.append(i)
    return values
lst=[1, 2, 4, 4, 6]
a=get_values(lst)
print(a)
b=np.matrix('1 2; 3 4')
col = b[:,0].tolist()
print(col)
if col == [1, 3]:
    print('done!')

输出

[1, 2, 4, 6]
[[1], [3]]

如您所见,if语句中忽略了方法tolist()的返回列表。现在,如果我无法更改if语句(出于任何原因)我该如何管理b,就像它是a之类的列表一样?

1 个答案:

答案 0 :(得分:1)

问题是numpy.matrix个对象始终保持两个维度。转换为数组,然后展平:

>>> col = b[:,0].getA().flatten().tolist()
>>> col
[1, 3]

或者只是使用普通numpy.ndarray s ...

>>> a = b.getA()
>>> a[:,0]
array([1, 3])

... VS

>>> b[:,0]
matrix([[1],
        [3]])