假设您正在尝试创建一个由值矩阵(numpy数组)表示的合成映像10x10。这个图像有三个被阻塞的部分。在左上角块中,列0-4和行0-4,值为1。右块、列5-9和行0-9将为0。其余区域为0-4列和5-9行,为2。(见附图)
创建这样一个对象的最快方法是什么?我知道您可以创建一个零数组,并迭代地更改每个列中的值,但我也知道这不是一个有效的方法。我假设它只涉及使用np.array生成数组,但我不太确定语法。
发布于 2015-05-30 03:27:25
我的第一个想法是创建一个0
‘空’数组,然后填充1
和2
块。例如。
In [145]: C = np.zeros((10,10), int)
In [146]: C[:4,:4]=1
In [147]: C[:4,5:9]=2
In [148]: C
Out[148]:
array([[1, 1, 1, 1, 0, 2, 2, 2, 2, 0],
[1, 1, 1, 1, 0, 2, 2, 2, 2, 0],
[1, 1, 1, 1, 0, 2, 2, 2, 2, 0],
[1, 1, 1, 1, 0, 2, 2, 2, 2, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
您还可以创建块(使用np.ones
等),并将它们连接起来。hstack
和vstack
只是连接的替代API。但是,在编译后的代码中,级联最终使用了这个初始化和赋值方法。熟悉这两种方法是个好主意。
发布于 2015-05-30 01:48:54
关于,
import numpy as np
a = np.ones((5,5))
b = a*2.
c = np.zeros((10,5))
np.hstack((np.vstack((a,b)),c))
发布于 2015-05-30 01:47:31
这是家庭作业问题吗?和numpy.concatenate
和numpy.ones
玩一玩,看看你过得怎么样。
https://stackoverflow.com/questions/30541275
复制相似问题