问题标签 [numpy-indexing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
61 浏览

python-3.x - 如何删除嵌套的 for 循环并使用 numpy 数组 insead

我有一个包含 580 帧的视频。我需要能够从视频中检测到绿色并创建一个掩码,以便在找到绿色的位置放置零值,其余的应该是 255。我已经将视频转换为 HSV 格式并使用嵌套的 for 循环和它大约需要一个小时才能做到这一点我想知道是否有更快的方法来做到这一点。
这是我当前的代码

temp 是我的 HSV 数组, temp1 是我正在创建的掩码

0 投票
1 回答
134 浏览

python - Python中3维Numpy ndarray中的高级索引

我有一个形状 (68, 64, 64) 的 ndarray,称为“预测”。这些尺寸对应于 image_number、height、width。对于每个图像,我有一个长度为 2 的元组,其中包含对应于每个 64x64 图像中特定位置的坐标,例如 (12, 45)。我可以将这些坐标堆叠到另一个形状为 (68,2) 的 Numpy ndarray 中,称为“位置”。

如何在不使用循环的情况下构造切片对象或构造必要的高级索引索引来访问这些位置?寻求语法帮助。目标是使用没有循环的纯 Numpy 矩阵。

工作循环结构

期望的方法

0 投票
0 回答
112 浏览

numpy - 有没有办法在一个批处理操作中从一个 2D numpy 数组中切出多个 2D numpy 数组?

我有一个 numpy 数组heatmapshape(img_height, img_width)和另一个 shape 数组bboxes(K, 4)其中K是一些边界框。每个边界框的定义如下[x_top_left, y_top_left, width, height]:这是此类数组的示例:

heatmap最初用零填充。我需要做的是将每个边界框的值 1 放在相应的位置。结果heatmap应该是:

需要注意的重要事项:

  • 轴 0 对应于图像高度
  • 轴 1 对应于图像宽度

我已经使用 python for 循环解决了这个问题,如下所示:

我想避免使用 python for 循环(如果可能的话)并且能够做这样的事情:

有没有办法在 numpy 中进行多次切片?

我知道numpy integer array indexing,但是要生成这样的索引,我也无法避免 python for 循环。

0 投票
1 回答
32 浏览

python - Numpy 索引问题.....提前索引 X[0] 在这里做什么?

我想知道为什么要X[y==0]打印两个数据点。它不应该只打印[0 1 0 1]吗?

因为X[0]

0 投票
1 回答
112 浏览

python - np.ufunc.at 用于二维数组

为了计算混淆矩阵(而不是准确性),可能需要在预测标签和真实标签上循环。如果下一个代码没有给出所需的结果,如何以 numpy 的方式执行该操作?

0 投票
1 回答
108 浏览

python-3.x - 条件索引 numpy 浮点数组

此代码的输出如下:

为什么数组中值为 0.3 的元素不小于或等于 0.3?​我对其他比较进行了同样的尝试,我发现 -0.1 <= -0.1 和 0.1 <= 0.1 而 0.2 不小于或等于 0.2。真的不明白这里发生了什么。

0 投票
0 回答
310 浏览

python - 如何获取被布尔 NumPy 数组屏蔽的范围的子集?

我需要对[0, n)具有必须始终忽略的值的连续整数范围进行整数数组索引。忽略的值不应出现在结果中。并且有一个独立的 NumPy 布尔长度数组n(即掩码),指示是否忽略原始范围的元素。

在纯 Python 中,我会这样写:

对于这个输入

调用的结果get_non_masked_indices(mask, idxs)

这是一种常用的数组处理模式(尤其是在图形算法中)。是否有 NumPy 函数来促进这一点?

到目前为止,我提供了以下选项:

  • 原生 NumPy 索引
  • 使用索引掩码进行掩码
  • 索引屏蔽范围

原生 NumPy 索引:

使用索引掩码进行掩码:

索引屏蔽范围:

来自应用程序的示例

假设我们有一个图,表示为相邻节点的 NumPy 数组列表。

图形着色

我感兴趣的函数只需要返回节点的非彩色邻居:

0 投票
1 回答
22 浏览

numpy - NumPy:如何根据某些条件确定 ndarray 的第一个轴的索引?

考虑以下 ndarray a-

在第一个轴上计算的最小值是 -

这是a[2]从目视检查。计算该指数的最有效方法是什么2

0 投票
1 回答
62 浏览

python - 矩阵上的快速 numpy 行切片

我有以下问题:我有一个yj大小矩阵(m,200)(.m = 3683yj

现在,我必须多次访问这个矩阵(大约 100 万次),并且我的代码由于索引而变慢(我已经分析了代码,这一步需要 65% 的时间)。

这是我尝试过的:

  1. 首先,使用索引进行切片:

变量R_u_idx_train是具有行索引的字典。

  1. 我认为布尔索引可能会更快:

R_u_idx_train_mask是一个字典,它返回一个大小为的布尔数组,m其中给出的索引R_u_idx_train设置为 True。

  1. 我也试过np.ix_
  1. 我也试过np.take

虽然这看起来很棒,但事实并非如此,因为它给出了一个形状的数组(R_u_idx_train[1].shape[0], R_u_idx_train[1].shape[0])(应该是(R_u_idx_train[1].shape[0], 200))。我想我没有正确使用该方法。

  1. 我也试过np.compress
  1. 最后我尝试使用布尔矩阵进行索引

那么,10.5 µs ± 79.7 ns per loop我能做到最好吗?我可以尝试使用cython,但这似乎只是索引的很多工作......

非常感谢。

0 投票
2 回答
136 浏览

python - 基于 2d numpy 数组中的索引列表访问行的更有效方法?

所以我有 2d numpay 数组 arr。这是一个比较大的:arr.shape = (2400, 60000)

我目前正在做的事情如下:

  • 随机(带替换)选择arr.shape[0]索引
  • 访问(按行)选择的索引arr
  • 计算列平均值并选择最大值
  • 我重复了k次

它看起来像:

我的问题是速度很慢。以我的arr尺寸,1 个循环大约需要 3 秒。因为我想要一个大于 1k 的样本 - 我目前的解决方案非常糟糕(1k*~3s -> ~1h)。我已经对其进行了分析,瓶颈是基于索引访问行。"mean"而且"max"工作fast. np.random.choice也还可以。

你觉得有什么需要改进的地方吗?一种更有效的访问索引的方法,或者更好的更快的方法来解决这个问题?

到目前为止我尝试了什么:

  • numpy.take(较慢)
  • numpy.ravel:

某事类似于:

  • 与当前方法类似,但没有循环。我一次性创建了 3d arr 并访问了其他维度的行