2013-07-02 96 views
4

儘管我正在使用的輸入數據是隨機生成的,但是當我使用matplotlib來繪製它時,我只得到了幾個不同的點!我用表達式numpy中沒有隨機性。隨機

[[numpy.random.randint(0,20) + numpy.random.random() for i in xrange(100)] for j in xrange(2)] 

生成數據我期望的東西,將類似於一個表面。此外,我沒有添加任何隨機性的輸出,因爲我想確保在我做之前合適。

的輸出也可疑的,因爲它們本來應該與方程

z = 112x/2 + 2^.15y + 109 

任何幫助,將理解的生成。

這裏有陰謀的一些看法:

figure figure figure

+0

你應該嘗試更新圖片... –

+0

這個方程是什麼?是否需要了解實際問題? – Alex

+3

爲什麼不用'20 * numpy.random.random()'來代替? – Alex

回答

5

我的numpy沒有問題。這將是很好的,如果你共享你的代碼,因爲錯誤可能是存在的,因爲下面的作品就好了:

import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

x, y = np.array([[np.random.randint(0,20) + np.random.random() 
        for i in xrange(100)] for j in xrange(2)]) 
z = 112*x/2 + 2**.15*y + 109 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.scatter(x, y, z) 
ax.set_xlabel('x') 
ax.set_ylabel('y') 
ax.set_zlabel('z') 

plt.show() 

enter image description here

至於其他已經注意到,生成你的號碼的正確方法是:

x, y = np.random.rand(2, 100) * 20 

甚至

x, y = np.random.randint(20, size=(2, 100)) + np.random.rand(2, 100) 

,但有對結果沒有影響。

+0

謝謝你。這些值在解釋之前會通過數據庫,所以我會在那裏查看。 – Magitrek

+0

我把繪圖生成代碼放在數據庫生成器腳本和數據庫包裝器中,它看起來完全不同,現在我知道在哪裏真正尋找 – Magitrek

+1

經過大量的數據庫工具擺弄之後,它是:http: //i.stack.imgur.com/zIWl6.png謝謝大家! – Magitrek

0

這種分佈看起來不錯給我。它看起來不像一個表面,因爲你不會生成真正的數字,只是整數,這就是爲什麼這些「酒吧」正在形成。

+0

我將代碼更改爲numpy.random.random()* 20,並且我仍然得到相同的小節。 – Magitrek

+2

這是因爲你似乎在做的是生成20個隨機數,然後將它們分配給一個隨機值。基本上你會生成一個像[1.2,1.5,18.2等]的列表,並將其分配給一個Y值而不是N Y值,因此所有這些都會形成一個條。 – BenjaminCohen