4

したがって、リストに多数の 2 次元 Numpy 配列があり、それらがすべて同じ形状であることを確認したいと考えています。2 番目の次元は各配列で同じですが、1 番目の次元は異なります。

配列 X の形状が (n,m) で、配列 Y の形状が (n+2,m) であるとします。X と Y の両方が (n+2,m) になるように、配列 X に 2 行のゼロを追加したいと思います。

リストを調べて、すべての配列が同じ形状であることを確認する最もPythonらしい方法は何ですか? リスト内のすべての配列の最初の次元の最大値が何であるかを知っているとしましょう-それをNと呼びます-そして、前述のように、すべての配列がmの2番目の次元を持っていることを知っています。

ありがとう、みんな!

4

2 に答える 2

4

一行で:

[np.r_[a, np.zeros((N - a.shape[0], m), dtype=a.dtype)] for a in your_arrays]

多分もっと読みやすい

for i,a in enumerate(your_arrays):
  rows, cols = a.shape
  if rows != N:
    your_arrays[i] = np.vstack([a, np.zeros((N - rows, cols), dtype=a.dtype)])
于 2013-05-30T02:53:41.967 に答える
2

比較的最近、numpy.padが導入されたので、次のものもあります。

>>> X = np.ones((3,2))
>>> Y = np.ones((5,2))*2
>>> N = 5
>>> nX, nY = [np.pad(m, ((0,N-m.shape[0]),(0,0)), 'constant') for m in [X, Y]]
>>> nX
array([[ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.],
       [ 0.,  0.],
       [ 0.,  0.]])
>>> nY
array([[ 2.,  2.],
       [ 2.,  2.],
       [ 2.,  2.],
       [ 2.,  2.],
       [ 2.,  2.]])
于 2013-05-30T03:11:11.010 に答える