こんばんは。
前記のk-meansやらでSample Mean(標本平均)を求める必要があったので、その場しのぎで自作してたんですけど、もっとスマートにできないかなと、探して見ました。
これはベクトルを実際どう管理するかっていう最近の悩みにも直結するんですけどね。笑
結論から言うとありました。
ここのsumのところを見てみてください。
axisで深さを指定できるみたいです。
やはり、思ったことはすでに誰かがやってくれてますね。笑
sample codeは下に載せておきます。
1: #! usr/bin/env python 2: # -*- coding: utf-8 -*- 3: 4: #元がベクトルであるような標本を扱う際に、 5: #効率良く標本平均を求めることができないか、検証する 6: import numpy 7: N = 10 8: d = 3 9: D = []#まず標本をリストとしておく 10: for i in range(N): 11: D.append(numpy.random.random_sample(d)) 12: #とりあえずプリント 13: for i, j in enumerate(D): 14: print i, j 15: #とりあえず現在の方法でプリントしておく 16: s = numpy.zeros(len(D[0])) 17: for i in D: 18: s += i 19: print s#これがほしい 20: #とりあえずDをnumpy.arrayにしてみる。 21: D = numpy.array(D) 22: print "convert list to numpy.array" 23: print D 24: 25: #できた。 26: #じゃあこれのsumを出してみる。 27: 28: print D.sum() 29: #スカラーが出てきた… 30: #もしかしてこのスカラーは全部のエレメントをを足したものだろうか。 31: #だとすると以下と一致するはず 32: 33: s = 0 34: for i in D: 35: s += i.sum() 36: print s 37: #予想通り一致した。 38: #次の方法を模索する。 39: 40: #耳寄りな情報! 41: #参考文献に載せておく。 42: #sumのaxisを0にすればよいみたいだ。 43: print D.sum(axis=0)#完了だ。 44: 45: #ちなみに… 46: print D.sum(axis=1) 47: #各ベクトルのsumが出てるみたいだ。 48: 49: print D.sum(axis=2) 50: #これはエラー 51: #axisは深さだと理解しておこう。 52: 53: