Python 创建具有恒定颜色的numpy图像

Python 创建具有恒定颜色的numpy图像,python,numpy,Python,Numpy,在所有通道中创建具有恒定标量的彩色图像很容易: height, width = 3, 4 shape = (height, width) num_channels = 3 scalar_value = 0.5 image = np.full((*shape, num_channels), scalar_value) 有没有一种简单的方法来创建具有恒定颜色向量的图像 vector_value = (0.3, 0.4, 0.5) # e.g. (red, green, blue) image =

在所有通道中创建具有恒定标量的彩色图像很容易:

height, width = 3, 4
shape = (height, width)
num_channels = 3
scalar_value = 0.5
image = np.full((*shape, num_channels), scalar_value)
有没有一种简单的方法来创建具有恒定颜色向量的图像

vector_value = (0.3, 0.4, 0.5)  # e.g. (red, green, blue)
image = create_new(shape, vector_value)
这可以使用自定义函数完成:

def create_new(shape, vector_value):
  image = np.empty((*shape, len(vector_value)))
  image[...] = vector_value
  return image

但是我想知道是否可以使用一个简单的numpy表达式来实现这一点。

这似乎是可行的,尽管它在向量上创建了一个视图,而不是一个单独的图像数组:

image = np.broadcast_to(vector_value, (*shape, num_channels))
也许是这个,虽然有点长:

image = np.broadcast_to(vector_value, (*shape, num_channels)).copy()

这似乎是可行的,尽管它在向量上创建了一个视图,而不是一个单独的图像数组:

image = np.broadcast_to(vector_value, (*shape, num_channels))
也许是这个,虽然有点长:

image = np.broadcast_to(vector_value, (*shape, num_channels)).copy()
的文档有点误导性,阅读不正确。它接受任何可广播的值作为fill_值,而不仅仅是标量。这意味着你可以

np.full((*shape, len(vector_value)), vector_value)
我用numpy版本1.17.3测试了这一点,我不确定这是什么时候改变的。我的猜测是,如果你回溯到足够远的地方,文档是正确的,fill_值只能是一个标量

当前有一个问题需要更新文档:。

的文档有点误导性,阅读不正确。它接受任何可广播的值作为fill_值,而不仅仅是标量。这意味着你可以

np.full((*shape, len(vector_value)), vector_value)
我用numpy版本1.17.3测试了这一点,我不确定这是什么时候改变的。我的猜测是,如果你回溯到足够远的地方,文档是正确的,fill_值只能是一个标量


当前有一个问题需要更新文档:。

这是一个非常简单的表达式。也许某些使用?np.full的东西真的应该能够接受任何可广播的值。@mad物理学家是的,推广np.full将是理想的。等等,显然是这样……显然,numpy的人几天前也注意到了:这是一个非常简单的表达式。也许某些使用?np.full的东西真的应该能够接受任何可以广播的值。@mad物理学家是的,推广np.full将是理想的。等等,显然是这样……显然,numpy的人几天前也注意到了:这很聪明。非常+1请注意,这比典型图像大小的公认答案要高,而且只要你调用。复制结果是相同的。这很聪明。非常+1请注意,这比典型图像尺寸的公认答案要高,而且只要您呼叫。复制结果是相同的。