2017-07-22 20 views
0

np.newaxisは、プログラム1のnumpy配列のインデックス内ではどのように機能しますか?なぜこのように機能するのですか?ファンシーインデックスのナンシー放送

プログラム1:

import numpy as np 
x_id = np.array([0, 3])[:, np.newaxis] 
y_id = np.array([1, 3, 4, 7]) 
A = np.zeros((6,8)) 
A[x_id, y_id] += 1 
print(A) 

結果1:

[[ 0. 1. 0. 1. 1. 0. 0. 1.] 
[ 0. 0. 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0. 0. 0.] 
[ 0. 1. 0. 1. 1. 0. 0. 1.] 
[ 0. 0. 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0. 0. 0.]] 
newaxis

答えて

1

np.array([[0],[3]])同じ列ベクトルにx_id配列を、オン。

したがってAは、カタログ番号[0,3][1,3,4,7]に索引付けされています。それとも別の言い方をするために、あなたが行0と3のための1秒で終わる、列1,3,4、および7

はまたnp.ix_([0,3], [1,3,4,7])

または

In [832]: np.stack(np.meshgrid([0,3],[1,3,4,7],indexing='ij'),axis=2) 
Out[832]: 
array([[[0, 1], 
     [0, 3], 
     [0, 4], 
     [0, 7]], 

     [[3, 1], 
     [3, 3], 
     [3, 4], 
     [3, 7]]]) 

を見て+=1の設定には注意してください。インデックスが複製されていると、期待どおりの結果を得ることができないか、ループを起こす可能性があります。