相关疑难解决方法(0)

Numpy:快速找到第一个价值指数

如何找到Numpy数组中第一次出现数字的索引?速度对我很重要.我对以下答案不感兴趣,因为他们扫描整个数组并且在第一次出现时不停止:

itemindex = numpy.where(array==item)[0][0]
nonzero(array == item)[0][0]
Run Code Online (Sandbox Code Playgroud)

注1:该问题的答案似乎没有任何问题是否有Numpy函数返回数组中某些内容的第一个索引?

注2:使用C编译方法比Python循环更受欢迎.

python numpy find

96
推荐指数
9
解决办法
8万
查看次数

在numpy数组中插入NaN值

是否有一种快速的方法用(例如)线性插值替换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 interpolation numpy nan

54
推荐指数
8
解决办法
3万
查看次数

NumPy数组中的元素索引

在Python中,我们可以使用.index()获取数组中值的索引.我怎么能用NumPy数组做到这一点?

当我尝试做的时候

decoding.index(i)
Run Code Online (Sandbox Code Playgroud)

它说NumPy库不支持这个功能.有办法吗?

python arrays indexing numpy indexof

54
推荐指数
5
解决办法
19万
查看次数

如何将one-hot编码转换为整数?

我有一个形状为(100,10)的numpy数组.每行都是一个热门编码.我想将它转换为具有形状(100,)的nd数组,以便将每个向量行转换为表示非零索引的索引的整数.是否有使用numpy或tensorflow的快速方法?

python numpy tensorflow

28
推荐指数
3
解决办法
2万
查看次数

一次获取NumPy数组中的几个元素的索引

有没有办法一次获取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)

python arrays numpy

21
推荐指数
3
解决办法
7729
查看次数

找到第一个np.nan值的最有效方法是什么?

考虑一下阵列 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]的编辑.
这个问题有几个不同的原因.

  1. 这个问题和答案涉及价值观的平等.这是关于isnan.
  2. 那些答案都遭遇了我的答案面临的同样问题.请注意,我提供了一个完全有效的答案,但强调它的效率低下.我正在寻找解决效率低下的问题.

关于第二次[dup]的编辑.

解决平等和问题/答案仍然很老,很可能已经过时了.

python numpy

13
推荐指数
3
解决办法
915
查看次数

得到numpy.ndarray的索引

我有一个numpy.ndarray类型的一维数组,我想知道它的最大条目的索引.找到最大值后,我用了

peakIndex = numpy.where(myArray==max)
Run Code Online (Sandbox Code Playgroud)

找到峰值指数.但是我的脚本吐出来而不是索引

peakIndex = (array([1293]),)
Run Code Online (Sandbox Code Playgroud)

我希望我的代码只吐出整数1293.如何清理输出?

python

6
推荐指数
1
解决办法
1万
查看次数

numpy:在排序列表中,找到每个唯一值的第一个和最后一个索引

有了排序列表,任何人都如何找到(使用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]

先感谢您

python numpy

5
推荐指数
0
解决办法
219
查看次数

如何使用 Pytorch 和/或 Numpy 高效查找多维矩阵数组中最大值的索引

背景

处理高维数据在机器学习中很常见。例如,在卷积神经网络 (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 个或更多维度。是的,我们可以嵌套在单个维度上运行的函数,但这些是一些效率最低的方法。

我尝试过的

  • 我看过这个 Stackoverflow 问题,但作者正在处理一个特殊情况的 4D 数组,它被简单地压缩为 3D 数组。接受的答案是专门针对这种情况的,而指向 TopK 的答案是误导性的,因为它不仅在单个维度上运行,而且k=1根据所提出的问题需要这样做,从而发展为常规torch.max调用。
  • 我看过这个 Stackoverflow 问题,但是这个问题及其答案,重点关注单一维度。
  • 我已经看过这个 Stackoverflow 问题,但我已经知道答案的方法,因为我在自己的答案中独立地表述了它我修改了该方法非常低效)。
  • 我看过这个Stackoverflow问题,但它不满足这个问题的关键部分,即与效率有关。
  • 我阅读了许多其他 Stackoverflow 问题和答案,以及 Numpy 文档、Pytorch 文档和 Pytorch 论坛上的帖子。
  • 我已经尝试实施很多不同的方法来解决这个问题,足以让我创建这个问题,以便我可以回答它并回馈社区以及将来寻找此问题解决方案的任何人。

绩效标准

如果我问有关效率的问题,我需要清楚地详细说明期望。我正在尝试为上述问题找到一种省时的解决方案(空间是次要的),而无需编写 C …

python numpy max numba pytorch

5
推荐指数
1
解决办法
2475
查看次数

查找满足条件的二维 numpy 数组的索引

我有一个大的 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)

python arrays numpy matrix

4
推荐指数
1
解决办法
4891
查看次数

标签 统计

python ×10

numpy ×9

arrays ×3

find ×1

indexing ×1

indexof ×1

interpolation ×1

matrix ×1

max ×1

nan ×1

numba ×1

pytorch ×1

tensorflow ×1