我有一个简单的事情要做,但我仍然没有成功使用numpy mgrid& meshgrid。 我有一个100个元素的numpy向量:
[0,0,0...0]
我希望像这样创建一个1000x100
numpy数组,每次将一个向量值增加0.1
,在到达1.0
时切换到下一个向量值。
所以,第一次迭代应该给我:
[0.1 0 0..0]
[0.2 0 0..0]
.
.
[0.9 0 0..0]
[1.0 0 0..0]
从现在开始,我应该迭代第二个向量编号,保留以前的值:
[1.0 0.1 0 0..0]
[1.0 0.2 0 0..0]
[1.0 0.3 0 0..0]
等等。最终矩阵应该类似于1000x100,但我不需要在一个大的numpy数组中将所有值组合在一起 - 在每次迭代中迭代并产生相应的向量就足够了。 提前谢谢!
答案 0 :(得分:1)
以下是使用initialization
和np.maximum.accumulate
-
def create_stepped_cols(n): # n = number of cols
out = np.zeros((n,10,n))
r = np.linspace(0.1,1.0,10)
d = np.arange(n)
out[d,:,d] = r
out.shape = (-1,n)
np.maximum.accumulate(out, axis=0, out = out)
return out
样品运行 -
In [140]: create_stepped_cols(3)
Out[140]:
array([[ 0.1, 0. , 0. ],
[ 0.2, 0. , 0. ],
[ 0.3, 0. , 0. ],
[ 0.4, 0. , 0. ],
[ 0.5, 0. , 0. ],
[ 0.6, 0. , 0. ],
[ 0.7, 0. , 0. ],
[ 0.8, 0. , 0. ],
[ 0.9, 0. , 0. ],
[ 1. , 0. , 0. ],
[ 1. , 0.1, 0. ],
[ 1. , 0.2, 0. ],
[ 1. , 0.3, 0. ],
[ 1. , 0.4, 0. ],
[ 1. , 0.5, 0. ],
[ 1. , 0.6, 0. ],
[ 1. , 0.7, 0. ],
[ 1. , 0.8, 0. ],
[ 1. , 0.9, 0. ],
[ 1. , 1. , 0. ],
[ 1. , 1. , 0.1],
[ 1. , 1. , 0.2],
[ 1. , 1. , 0.3],
[ 1. , 1. , 0.4],
[ 1. , 1. , 0.5],
[ 1. , 1. , 0.6],
[ 1. , 1. , 0.7],
[ 1. , 1. , 0.8],
[ 1. , 1. , 0.9],
[ 1. , 1. , 1. ]])
In [141]: create_stepped_cols(100).shape
Out[141]: (1000, 100)