2

如何创建一个 (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

非常感谢!

4

2 回答 2

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 的广播符号。

  • 您可以更紧凑地编写此代码,但出于说明目的,我将其拆分为单独的步骤。

于 2012-12-04T03:22:58.600 回答
0

执行此操作的另一种方法(只是为了好玩)是使用tile( doc)

c = 10 + np.cumsum(np.ones(64))*.1 - .1
a = np.tile(c,(48,1)).T
于 2012-12-04T05:15:39.537 回答