我正在尝试重新创建这个函数
max(array, [], 3)
这里需要翻译的内容是:从MatLab开始,它可以处理我的300x300像素图像堆(我在这里说“图像”,因为我正在处理图像,实际上这只是一个大型双重数组),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的新手,因此这里的答案对我来说不太清楚。是否有现有的函数可以执行此操作?
self.dataset
数组大小。你可以尝试使用以下代码来获取正确的数组维度:dim1 = len(self.dataset) dim2 = len(self.dataset[0]) dim3 = len(self.dataset[0][0])
。 - Mohammad nagdawimax
函数不会进行归一化处理,它只是针对每个i
和j
的组合取array(i,j,:)
的最大值。 - Cris Luengomax(array, [], 3)
的 Numpy 等效函数是np.amax(array, axis=2)
。这两个函数都没有归一化处理。 - buzjwa