如何找到Numpy数组中第一次出现数字的索引?速度对我很重要.我对以下答案不感兴趣,因为他们扫描整个数组并且在第一次出现时不停止:
itemindex = numpy.where(array==item)[0][0]
nonzero(array == item)[0][0]
Run Code Online (Sandbox Code Playgroud)
注1:该问题的答案似乎没有任何问题是否有Numpy函数返回数组中某些内容的第一个索引?
注2:使用C编译方法比Python循环更受欢迎.
是否有一种快速的方法用(例如)线性插值替换numpy数组中的所有NaN值?
例如,
[1 1 1 nan nan 2 2 nan 0]
Run Code Online (Sandbox Code Playgroud)
将被转换成
[1 1 1 1.3 1.6 2 2 1 0]
Run Code Online (Sandbox Code Playgroud) 在Python中,我们可以使用.index()获取数组中值的索引.我怎么能用NumPy数组做到这一点?
当我尝试做的时候
decoding.index(i)
Run Code Online (Sandbox Code Playgroud)
它说NumPy库不支持这个功能.有办法吗?
我有一个形状为(100,10)的numpy数组.每行都是一个热门编码.我想将它转换为具有形状(100,)的nd数组,以便将每个向量行转换为表示非零索引的索引的整数.是否有使用numpy或tensorflow的快速方法?
有没有办法一次获取NumPy数组中的几个元素的索引?
例如
import numpy as np
a = np.array([1, 2, 4])
b = np.array([1, 2, 3, 10, 4])
Run Code Online (Sandbox Code Playgroud)
我想找到ain 中每个元素的索引b,即:[0,1,4].
我发现我使用的解决方案有点冗长:
import numpy as np
a = np.array([1, 2, 4])
b = np.array([1, 2, 3, 10, 4])
c = np.zeros_like(a)
for i, aa in np.ndenumerate(a):
c[i] = np.where(b==aa)[0]
print('c: {0}'.format(c))
Run Code Online (Sandbox Code Playgroud)
输出:
c: [0 1 4]
Run Code Online (Sandbox Code Playgroud) 考虑一下阵列 a
a = np.array([3, 3, np.nan, 3, 3, np.nan])
Run Code Online (Sandbox Code Playgroud)
我可以
np.isnan(a).argmax()
Run Code Online (Sandbox Code Playgroud)
但这需要找到所有np.nan只是为了找到第一个.
有更有效的方法吗?
我一直在试图弄清楚我是否可以传递一个参数,np.argpartition使np.nanget首先排序而不是last.
关于[dup]的编辑.
这个问题有几个不同的原因.
isnan.关于第二次[dup]的编辑.
解决平等和问题/答案仍然很老,很可能已经过时了.
我有一个numpy.ndarray类型的一维数组,我想知道它的最大条目的索引.找到最大值后,我用了
peakIndex = numpy.where(myArray==max)
Run Code Online (Sandbox Code Playgroud)
找到峰值指数.但是我的脚本吐出来而不是索引
peakIndex = (array([1293]),)
Run Code Online (Sandbox Code Playgroud)
我希望我的代码只吐出整数1293.如何清理输出?
有了排序列表,任何人都如何找到(使用numpy)每个唯一值的第一个和最后一个索引?
例:
初始排序列表:
>>> import numpy as np
>>> initial_list = np.array([1, 3, 2, 3, 0, 3, 0, 1, 0])
>>> initial_list.sort()
>>> initial_list
array([0, 0, 0, 1, 1, 2, 3, 3, 3])
Run Code Online (Sandbox Code Playgroud)
其结果将是:
第一:[0,0,0,3,3,5,6,6,6]
最后:[2,2,2,4,4,5,8,8,8]
先感谢您
处理高维数据在机器学习中很常见。例如,在卷积神经网络 (CNN) 中,每个输入图像的尺寸可以是 256x256,并且每个图像可以具有 3 个颜色通道(红色、绿色和蓝色)。如果我们假设模型一次接收一批 16 张图像,则进入 CNN 的输入的维度为[16,3,256,256]。每个单独的卷积层都期望 形式的数据[batch_size, in_channels, in_y, in_x],并且所有这些数量通常会逐层变化(batch_size 除外)。我们用于表示由值组成的矩阵的术语[in_y, in_x]是“特征映射”,这个问题涉及在给定层的每个特征映射中查找最大值及其索引。
我为什么要这样做?我想对每个特征图应用一个掩码,并且我想应用以每个特征图中的最大值为中心的掩码,为此,我需要知道每个最大值所在的位置。这种掩模应用是在模型的训练和测试期间完成的,因此效率对于减少计算时间至关重要。有许多 Pytorch 和 Numpy 解决方案可用于查找单例最大值和索引,以及查找沿单个维度的最大值或索引,但没有(我能找到)专用且高效的内置函数来查找最大值的索引一次沿着 2 个或更多维度。是的,我们可以嵌套在单个维度上运行的函数,但这些是一些效率最低的方法。
k=1根据所提出的问题需要这样做,从而发展为常规torch.max调用。如果我问有关效率的问题,我需要清楚地详细说明期望。我正在尝试为上述问题找到一种省时的解决方案(空间是次要的),而无需编写 C …
我有一个大的 2D numpy 数组,想在其中找到满足条件的一维数组的索引:例如,至少有一个大于给定阈值 x 的值。
我已经可以通过以下方式做到这一点,但有没有更短、更有效的方法来做到这一点?
import numpy
a = numpy.array([[1,2,3,4,5], [1,2,3,4,20], [1,2,2,4,5]])
indices = []
i = 0
x = 10
for item in a:
if any(j > x for j in item):
indices.append(i)
i += 1
print(indices) # gives [1]
Run Code Online (Sandbox Code Playgroud)