2017-10-10 31 views
0

我知道这是一个基本问题,可能以前已经回答过,但是我找不到一个确切的解决方案,然后想要问一下。在np上的TypeError使用附加列表

我正在制作一个循环,将逝去的时间转换为正弦波,然后绘制它。我对这部分没有任何问题,但之后我正在努力进行一些分析。

import time 
import numpy as np 

x = [] 
y = [] 

start = time.time() 

for times in range(100): 

    stop = time.time() 
    duration = stop-start 
    x.append(duration) 
    y.append(np.sin(duration)) 

    time.sleep(0.05) 

这一切工作正常,并产生所需的图形,但我则在寻找使用np.where命令并返回一个错误:

print(y[np.where(y > 0)]) 

TypeError: unorderable types: list() > int()

什么混淆我是什么time.time()返回一个值,然后将其附加到矩阵上,如果我呼叫type(y[0])它会给出numpy.float的定义。我知道我必须调用一些错误的函数或者在我的列表定义中做错了事情!就好像我对一个简单的int矩阵做的一样,它一切正常。

a = np.arange(0,100,2) 
print(a[np.where(a > 80)]) 

[82 84 86 88 90 92 94 96 98]

这是所有罚款,所以我只是想知道我错了我的列表定义为TypeError

提前欢呼!

+0

您是否尝试使用'np.array(x)''将'x'列表转换为'numpy'数组?它是否会产生相同的错误? –

+0

这确实解决了它,非常感谢你。你能向我解释一下这些变化以及它如何让这个功能起作用吗?干杯。 – Wrothschild

+1

Numpy覆盖了基本操作符的等式,比较等。在这种情况下,调用'>'操作符与调用[numpy.greater](https://docs.scipy.org/doc/numpy-1.13.0/reference /generated/numpy.greater.html)。 –

回答

0

铸造y成为一个numpy阵列y = np.array(y)然后使用np.where(y[np.where(y > 0)])应该让你找到你要的结果。

+0

这很有用,非常感谢。你有可能解释它改变什么以促进它?干杯。 – Wrothschild

+0

根据文档([链接](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.where.html))'np.where()'需要类似数组的条件并不接受名单。 – nanoPhD

+0

有趣,非常感谢。 – Wrothschild