如何创建这样的(48,64)Numpy数组:
i, i, i, .....,i
i+0.1, i+0.1,..........,i+0.1
i+0.2, i+0.2,..........,i+0.2
.
.
.
.
i+6.3, i+6.3,..........,i+6.3
0.1是行之间的固定差异。
我已经用JoshAdel的答案完美地解决了这个问题,
但固定差异在列之间怎么样?即
i,i+0.1,i+0.2.....i+6.3
i,i+0.1,i+0.2.....i+6.3
.
.
.
i,i+0.1,i+0.2.....i+6.3
非常感谢!
答案 0 :(得分:2)
import numpy as np
i = 10.0
a = np.empty((64,48))
a.fill(i)
a += np.arange(0,6.4,0.1)[:,np.newaxis]
Out[12]:
array([[ 10. , 10. , 10. , ..., 10. , 10. , 10. ],
[ 10.1, 10.1, 10.1, ..., 10.1, 10.1, 10.1],
[ 10.2, 10.2, 10.2, ..., 10.2, 10.2, 10.2],
...,
[ 16.1, 16.1, 16.1, ..., 16.1, 16.1, 16.1],
[ 16.2, 16.2, 16.2, ..., 16.2, 16.2, 16.2],
[ 16.3, 16.3, 16.3, ..., 16.3, 16.3, 16.3]])
几点说明:
Numpy的形状约定是(nrow,ncolumn),所以你需要的形状是(64,48)而不是(48,64)你问题中的数组。
有多种方法可以做到这一点,但我选择使用numpy的broadcasting表示法。
您可以更紧凑地编写此内容,但为了说明的目的,我将其拆分为单独的步骤。
答案 1 :(得分:0)
执行此操作的另一种方法(仅仅是为了好玩)是使用tile
(doc)
c = 10 + np.cumsum(np.ones(64))*.1 - .1
a = np.tile(c,(48,1)).T