当前位置: 首页 > 知识库问答 >
问题:

如何有效地获得一个Numpy数组中相同值的数量?[重复]

鲁文昌
2023-03-14

我有一张3D医学图像。我使用scipy.ndimage.measurements.label获取连接的体素组。它非常快。但我还想得到每个标签的体素数量。我使用以下代码获取每个值的编号(假设image\u3dscipy.ndimage.measurements.label之后的数组)。大约2分钟。

import numpy as np
from skimage.measure import label
import time

image_3d = np.random.randint(100, size=(512, 512, 1024))
t1 = time.time()
pixel_count_list = [np.sum((image_3d== i).astype(int)) for i in range(100)]
t2 = time.time()
print("used time: ", t2-t1)
# 117 seconds

有没有什么高效的方式来高效的获取呢?

共有1个答案

刘承悦
2023-03-14
import numpy as np
from skimage.measure import label
import time

image_3d = np.random.randint(100, size=(512, 512, 1024))
t1 = time.time()

unique_label, count_list = np.unique(image_3d, return_counts=True)
t2 = time.time()
print("used time: ", t2-t1)
# 2 seconds


 类似资料:
  • 问题内容: 这听起来很简单,我想我的想法太复杂了。 我想制作一个数组,其元素是从两个形状相同的源数组生成的,具体取决于源数组中哪个元素更大。 为了显示: 我不知道如何产生一个将array1和array2的元素组合在一起的array3,以产生一个数组,其中仅取两个array1 / array2元素值中的较大者。 任何帮助将非常感激。谢谢。 问题答案: 我们可以使用NumPy内置的,正是为此而制作的-

  • 问题内容: 使用出色的numpy广播规则,您可以从形状(5,3)数组减去一个形状(3,)数组,其中 结果是一个形状(5,3)数组,其中每一行都是差异。 有没有一种方法可以从中减去一个形状(n,3)数组,以便在不显式使用循环的情况下从整个数组中减去每一行? 问题答案: 您需要扩展with的尺寸以形成3D数组,然后通过进行减法。这将对该操作起作用,并导致输出形状为。实现看起来像这样- 相反,如果所需的

  • 问题内容: 在 /中 ,是否有一种 有效的 方法来获取数组中唯一值的频率计数? 遵循以下原则: (对于您来说,R用户在那里,我基本上是在寻找该功能) 问题答案: 看一下: http://docs.scipy.org/doc/numpy/reference/generated/numpy.bincount.html 接着: 要么: 或者您想将计数和唯一值结合起来。

  • 在/中,是否有一种有效的方法来获取数组中唯一值的频率计数? 大致如下: (对于R用户来说,我基本上是在寻找函数)

  • 问题内容: 我试图将2D数组中的每个项乘以1D数组中的相应项。如果我想将每一列乘以一维数组,这非常容易,如numpy.multiply函数所示。但是我想相反,将行中的每一项相乘。换句话说,我想乘以: 并得到 但是我得到了 有谁知道用numpy可以做到这一点吗?非常感谢Alex 问题答案: 像您显示的正常乘法: 如果添加轴,它将使您所需的方式成倍增加: 您还可以移调两次:

  • 问题内容: 我有两个NumPy数组,例如: 和一个过滤器数组,例如: 我如何才能得到一个新的numpy数组,其中仅包含其中相同索引为True的值?就我而言:。 根据公认的解决方案(具有不同的值): 问题答案: NumPy支持布尔索引 假设 和是NumPy数组而不是Python列表(如问题所示)。您可以使用进行转换。