我有一个模块可以打印~12000个60 y值列表,对应一组60 x值。想要找到具有非零y值的最大x值。 使用numpy np.nonzero(y)返回每个列表。也尝试了
b = []
for i in range(len(y)):
if y[i] != 0: b.append(i)
print b
并返回y中的所有12000个索引。
非常感谢任何帮助!
答案 0 :(得分:1)
import numpy as np
np.max(np.where(y))
答案 1 :(得分:0)
您可能正在寻找numpy.where
根据条件从x或y返回元素。
如果只给出条件,则返回condition.nonzero()。
这样的事情:
largestindex = numpy.max(numpy.where(item))
答案 2 :(得分:0)
where
函数返回一个元组,因此您需要拉出第一个元素来获取所需的数据:
import numpy as np
y = [0, 0, 2, 3, 1, 0, 0, 3, 0]
print np.where(y)[0].max()
这打印7。
[编辑...]
我刚刚重新阅读了Adlai的问题:他有一个很大的列表,每个列表都有60个x
值。如果所有内容都在列表中,并且其中一个列表非常大,那么将每个60个值的12000项列表转换为12000乘60阵列可能最快,然后直接numpy
。如果y
是“外部”列表,那么np.array(y)
应该返回形状12000,60。如果就是这种情况,这是找到{{{}的更好解决方案1}}值在某处具有非零x
值:
y
逻辑是:通过比较为零将数据转换为真值表,然后用yy = np.array(y) # results in a shape (12000, 60)
np.where((yy != 0).any(axis=0))[0]
折叠真值表,然后在折叠的真值表中找到最大的索引。
将其与any(axis=0)
数据结合在一起,并将其整理成一行:
x
这会提供具有某些非零np.array(x)[np.where((np.array(y) != 0).any(axis=0))[0]].max()
值的最大x
值。如果你想要一个对应于非零y值的最大x值数组,那将是一个12,000项x值列表(每组60个y值一个),你需要稍微不同的东西。