【发布时间】:2017-03-27 22:53:53
【问题描述】:
我正在尝试以列表形式提取 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]]
如您所见,方法 tolist() 返回的列表在 if 语句中被忽略。现在,如果我不能更改 if 语句(出于任何原因),我该如何管理b,就好像它是像a 这样的列表?
【问题讨论】:
-
顺便说一句,你的
get_values函数会随着features的大而可怕地扩展。 -
可怕的是什么意思?我对这个功能没有问题
-
@嗯,那么,功能不是很大。但是您的算法是二次时间。如果您使用
set,它将是线性的。如果它在您使用的秤上运行良好,则无需更改它。但请注意,它是二次时间。 -
感谢您的分析 :) 我已经尝试了超过 4000 行的特征,似乎没有问题,但我同意你的看法
-
是的,在您处理数百万个项目之前,差异可能不会显示出来。