2016-10-25 10 views
1

形状がのAのnd配列があり、これは100 255 * 255イメージに対応します。私はこの多次元配列を反復したいと思いますし、各反復ごとに1つのイメージを取得します。これは私がやることです。A1 = A[i,:,:,:]結果はA1です。形は[255,255,3]です。しかし、私はそれが形状[1,255,255,3]を持って実施したいと思います。どうしたらいいですか?多次元配列のダミーディメンションを追加

+0

[Pythonでnumpy配列にディメンションを追加する方法](https://stackoverflow.com/questions/39428496/how-to-add-a-dimension-to-a-numpy-array-イン・パイソン) –

答えて

0

使用np.newaxisトリックを行う必要があります。 2次元配列上の

非常に簡単な例:

x = np.array([[0, 1], [2, 3]]) 
x.shape 
#: (2, 2) 
x[np.newaxis] 
#: array([[[0, 1], 
#:   [2, 3]]]) 
x[np.newaxis].shape 
#: (1, 2, 2) 
2
np.reshape(A1, (1, 255, 255, 3)) 

はあなたの結果の配列に

0

もちろん、問題ありません。 'reshape'を使用してください。 A1はnumpyの配列です

A1 = A1.reshape([1,255,255,3])

これはあなたの行列を再構築します

と仮定します。

A1がnumpyの配列でない場合は、ここで

A1 = numpy.array(A1).reshape([1,255,255,3])

0

答えが出ているの...使用する例であります、あなたは括弧を注意深く見ているの通知は、aとbが

>>> a = np.arange(2*2*2*2).reshape(2,2,2,2) 
>>> a.ndim 
4 
>>> b = a.reshape((1,)+a.shape) 
>>> b.ndim 
5 
>>> a 
array([[[[ 0, 1], 
     [ 2, 3]], 

     [[ 4, 5], 
     [ 6, 7]]], 


     [[[ 8, 9], 
     [10, 11]], 

     [[12, 13], 
     [14, 15]]]]) 
>>> b 
array([[[[[ 0, 1], 
      [ 2, 3]], 

     [[ 4, 5], 
      [ 6, 7]]], 


     [[[ 8, 9], 
      [10, 11]], 

     [[12, 13], 
      [14, 15]]]]]) 
0

が使用している場合は、その寸法によって異なるかどうかを識別します

for a in A: # iteration on the first dimension 
    a = a[None,...] # add the dim back 
    # or a.reshape(...) 

しかし

for i in range(A.shape[0]): 
    a = A[[i]] # preserve the 1st dim 
    # or a = A[None,i,...] 

を使用している場合しかし、私はそうenumerateを使用したい:

for i, a in enumerate(A): 
    a = a[None,...] 

をしかし、私はあなたがその最初の1次元を必要とする理由について考えることをお勧めしたいです。たぶんあなたは反復する必要はありませんか?