【发布时间】:2018-01-10 01:07:02
【问题描述】:
我正在尝试重新创建函数
max(array, [], 3)
来自 MatLab,它可以获取我的 N 个图像的 300x300px 图像堆栈(我在这里说“图像”是因为我正在处理图像,实际上这只是一个大的双数组),300x300xN,并创建一个 300x300 数组。我认为在这个函数中发生的事情是,如果它运行效率低下,它正在解析每个 (x,y) 点,然后从该点沿 z 轴取最大值,然后用最大值和最小值进行归一化整个数组的值。
我尝试在 python 中重新创建它
# Shape of dataset: (300, 300, 181)
# Type of dataset: <type 'numpy.ndarray'>
for x in range(numpy.size(self.dataset, 0)):
for y in range(numpy.size(self.dataset, 1)):
print "Point is", x, y
# more would go here to find the maximum (x,y) value over Z axis in self.dataset
一个非常简单的 X,Y 迭代器。 ——但我的 IDE 不仅在运行这段代码几毫秒后崩溃,而且感觉很糟糕而且效率低下。
我有什么遗漏吗?我是 Python 新手,因此我不清楚这里的答案。是否有执行此操作的现有函数?
【问题讨论】:
-
您应该在问题中发布一个小样本数据集,例如尺寸为 10*10*3,这将有助于其他人提出建议。
-
我认为您的问题与返回
self.dataset数组大小有关。你能试试这个吗?dim1 = len(self.dataset) dim2 = len(self.dataset[0]) dim3 = len(self.dataset[0][0])获得正确的数组尺寸。 -
MATLAB 的
max未标准化。在这种情况下,i和j的每个组合只需要array(i,j,:)的最大值。 -
max(array, [], 3)的 Numpy 等效项是np.amax(array, axis=2)。这两个函数都没有标准化。