Python 2.7 在python中查找非零的最大索引

Python 2.7 在python中查找非零的最大索引,python-2.7,numpy,Python 2.7,Numpy,我有一个模块可以打印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个指数 非常感谢您的帮助 您可能正在寻找 根据条件从x或y返回元素 如果只给出条件,则返回条件.nonzero() 大概是这样的: largestindex = n

我有一个模块可以打印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个指数


非常感谢您的帮助

您可能正在寻找

根据条件从x或y返回元素

如果只给出条件,则返回条件.nonzero()

大概是这样的:

largestindex = numpy.max(numpy.where(item))

where
函数返回一个元组,因此需要提取第一个元素以获取所需的数据:

import numpy as np
y = [0, 0, 2, 3, 1, 0, 0, 3, 0]
print np.where(y)[0].max()
这张照片是7张

[编辑…] 我刚刚重读了阿德莱的问题:他有一个很大的列表,每个列表都有60个
x
值。如果所有内容都在列表中,并且其中一个列表非常大,那么将包含60个值的12000项列表转换为12000×60数组可能是最快的,然后直接转换为
numpy
。如果
y
是“外部”列表,则
np.array(y)
应返回形状12000、60。如果是这种情况,这是一个更好的解决方案,可以找到哪些
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
值。如果您想要一个对应于非零y值的最大x值数组,这将是一个12000项x值列表(每组60个y值一个),您需要一些稍微不同的东西。

这不起作用
array
numpy.max
是函数。它们不一样,
array==numpy.max
的结果总是返回false。我想我应该在写评论时更频繁地刷新页面!包括一个小例子和预期的结果,它使理解问题更容易。感谢您的深入回答!我尝试了您建议的修复,并返回了错误
np。其中((yy!=0)。any(axis=0))[0]AttributeError:“bool”对象没有属性“any”
请查看
类型(yy)
。它应该是numpy.ndarray,或者如果您使用的是python3。如果
type(yy)
是list,则需要将其转换为
yy=np.array(yy)
的数组。
yy!=0也应该是numpy.ndarray。然后,numpy.ndarray确实具有属性
.any()
。当您获得一个ndarray时,最好检查它的大小和类型。它们是
yy.shape
yy.dtype
yy.shape
应该是整个数据集,比如(12000,60)和
yy.dtype
应该是一个数字类型,比如int64或float。
np.array(x)[np.where((np.array(y) != 0).any(axis=0))[0]].max()