相关疑难解决方法(0)

快速python numpy功能在哪里?

我在几个for循环中多次使用numpy的函数,但它变得太慢了.有没有办法更快地执行此功能?我读过你应该尝试在线循环,以及在for循环之前为函数创建局部变量,但似乎没有什么能提高速度(<1%).在len(UNIQ_IDS)〜800 emiss_dataobj_data有numpy的ndarrays具有形状=(2600,5200).我用import profile得到的瓶颈在哪里手柄,并且wherefor循环是一个大的.

import numpy as np
max = np.max
where = np.where
MAX_EMISS = [max(emiss_data[where(obj_data == i)]) for i in UNIQ_IDS)]
Run Code Online (Sandbox Code Playgroud)

python performance for-loop numpy where

10
推荐指数
3
解决办法
5438
查看次数

快速将标记图像转换为{label:[coordinates]}的字典

假设我用scipy.ndimage.measurements.label标记了一个图像,如下所示:

[[0, 1, 0, 0, 0, 0],
 [0, 1, 0, 0, 0, 0],
 [0, 1, 0, 0, 0, 0],
 [0, 0, 0, 0, 3, 0],
 [2, 2, 0, 0, 0, 0],
 [2, 2, 0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

什么是收集属于每个标签的坐标的快速方法?就像这样:

{ 1: [[0, 1], [1, 1], [2, 1]],
  2: [[4, 0], [4, 1], [5, 0], [5, 1]],
  3: [[3, 4]] }
Run Code Online (Sandbox Code Playgroud)

我正在处理大小约为15,000 x 5000像素的图像,并且每个图像像素的大约一半被标记(即非零).

而不是迭代整个图像nditer,np.where(img == label)为每个标签做一些事情会更快吗?

编辑:

哪种算法最快取决于标记图像的大小与其所具有的标签数量相比.Warren Weckesser和Salvador Dali/BHAT IRSHAD的方法(基于np.nonzero和 …

python numpy image-processing scipy

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

n 维数组中唯一值的索引

我有一个包含 0 到 n 值的 2D Numpy 数组。我想获得一个长度为 n 的列表,以便该列表的第 i 个元素是一个包含所有值为 i+1(不包括 0)的索引的数组。

例如,对于输入

array([[1, 0, 1],
   [2, 2, 0]])
Run Code Online (Sandbox Code Playgroud)

我期待得到

[array([[0, 0], [0, 2]]), array([[1,0], [1,1]])]
Run Code Online (Sandbox Code Playgroud)

我发现了这个相关的问题: Get a list of重复元素的所有索引在 numpy 数组 中可能会有帮助,但我希望找到一个更直接的解决方案,不需要对数组进行展平和排序,并且尽可能高效.

python arrays numpy

3
推荐指数
1
解决办法
973
查看次数

标签 统计

numpy ×3

python ×3

arrays ×1

for-loop ×1

image-processing ×1

performance ×1

scipy ×1

where ×1