我正在尝试以列表形式提取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
之类的列表一样?
答案 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]])