2017-08-10 12 views
0

考えてみましょう:kのすべての要素のvon misesディストリビューションをsサンプル生成しようとしていますが、これはk=0のエラーを発生させます(これは私の帰無仮説です。私はそれを低めにして、バイアス方向をランダム化することによって、 "ファッジ"しようとしています。形状の不一致:形状の値配列Xが形状のインデックス結果にブロードキャストできませんでした。 。 。バツ?

は、その後、次のコード

import scipy.stats as stat  
rpt = (s,) + tuple(np.ones_like(shp)) 
theta = np.tile(theta, rpt) 
k_zero = np.logical_not(k) 
theta[:, k_zero] = np.random.rand(np.sum(k_zero), s) * 2 * np.pi - np.pi 
k[k_zero] = .001 
ks = np.tile(k, rpt)  

import numpy as np 
s = 1000 
k = np.arange(10) 
theta = np.zeros_like(k) 
shp = (10,) 

がエラー

Traceback (most recent call last): 

    File "<ipython-input-blah>", line 1, in <module> 
    theta[:, k_zero] = np.random.rand(np.sum(k_zero), s) * np.pi - np.pi/2 

ValueError: shape mismatch: value array of shape (1,1000) could not be broadcast to indexing result of shape (1,1000) 

を与えるが、想定します。 。 。それらの形は同じです。なぜ私はそれをすることができないのですか?

EDIT:以下の指摘するように -

theta[:, k_zero] = np.random.rand(s, np.sum(k_zero)) * np.pi - np.pi/2 

作品。これはエラーメッセージのバグですか?

+0

*されたエラーメッセージ*この単なるバグ - yesに私の編集した答えを見ますこれについて詳しく教えてください –

答えて

2

エラーメッセージ

あなたが受け取ったことをプリントアウトにバグがあることが表示されます

コード修正

ザ・問題はあなたの形がndom番号の割り当てが間違っています。以下で 見て...あなたは、このような問題をデバッグすることができます

theta[:, k_zero] = np.random.rand(np.sum(k_zero), s).reshape(s,1) 

方法は、割り当てられた変数と、あなたがそれを割り当てる変数の形状を調査しています。私が何をしたか例えば

theta.shape 
np.random.rand(np.sum(k_zero), s).shape 

だったと私は乱数が転置寸法で出てきたことを見た

+0

エラーメッセージのバグですか?シェイプが(s、1)と(1、s)であると私に言ったとすれば、かなり簡単にデバッグすることができます。 –

+0

エラーメッセージがこの場合直感的ではないと私は同意するでしょう:) –

+0

うまくいけば、私の答えはあなたに、「ValueError」が実際には全く混乱しているという心配を与えます! –