由于某种原因,我正在写一个函数,该函数创建一个包含给定数组(通常是图像)的数组,该数组将具有等于2或3的ndim
属性,我无法事先知道。我现在正在做类似的事情:
import numpy as np
def create_greater_array(im, scale):
shape = (im.shape[0] * scale + 2, im.shape[1] * scale + 2)
if im.ndim==3: #if image is RGB
shape = *shape, 3
greater_array = np.fill(shape, np.nan)
return greater_array
我很想知道是否可以避免进行额外的if
检查。实际上,我的代码实际上是一个类定义,并且做得还很多,所以我最终在类中添加了._is_RBG
属性。
我在想的是,由于最后一个维度始终为3或不存在,因此它可能是自动的。
编辑:我需要在同一程序中进行检查的另一种情况。
后来我有了另一个将图像插入数组的功能:
def insert_image(im):
big = create_greater_array(im, 2)
if im.ndims == 2:
big[1:im.shape[0]+1, 1:im.shape[1]+1] = im
else:
big[1:im.shape[0]+1, 1:im.shape[1]+1, :] = im
return big