Python 在numpy.random中缺少随机性

Python 在numpy.random中缺少随机性,python,numpy,Python,Numpy,虽然我正在处理的输入数据是随机生成的,但当我使用matplotlib绘制它时,我只得到了几个不同的点!我用了这个短语 [[numpy.random.randint(0,20) + numpy.random.random() for i in xrange(100)] for j in xrange(2)] 为了生成数据,我希望有类似于曲面的东西。此外,我没有向输出添加任何随机性,因为我想确保在我添加之前,拟合工作正常 这些输出也是可疑的,因为它们本应与方程式一起生成 z = 112x/2 +

虽然我正在处理的输入数据是随机生成的,但当我使用matplotlib绘制它时,我只得到了几个不同的点!我用了这个短语

[[numpy.random.randint(0,20) + numpy.random.random() for i in xrange(100)] for j in xrange(2)]
为了生成数据,我希望有类似于曲面的东西。此外,我没有向输出添加任何随机性,因为我想确保在我添加之前,拟合工作正常

这些输出也是可疑的,因为它们本应与方程式一起生成

z = 112x/2 + 2^.15y + 109
任何帮助都将不胜感激

以下是该图的一些视图:


我觉得这个发行版还可以。它看起来不像一个曲面,因为你没有生成实数,只是生成整数,这就是为什么这些“条”被形成的原因

我的屁股没问题。如果您共享了您的代码就好了,因为错误可能就在那里,因为下面的代码可以正常工作:

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()

正如其他人所指出的,生成数字的正确方法是:

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

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

但这对结果没有影响。

你应该尝试更新图片……这个等式是什么意思?需要了解实际问题吗?为什么不使用类似
20*numpy.random.random()
的东西呢?谢谢你的提示。代码现在看起来更好了,但同样的问题仍然存在。我不明白为什么每个(x,y)对都有多个z坐标,我认为这与x,y分布的奇异性有关。你能粘贴matplotlib代码吗?您可以执行类似于
>>np.bincount(np.digitized(np.random.rand(50000)*5,np.arange(1,5)))数组([9946986710155101279905])
的操作来显示numpy的rand函数的均匀分布。我将代码更改为numpy.random.random()*20,我仍然得到相同的条。这是因为你似乎在做的是生成20个随机数,然后将它们分配给一个随机值。基本上你会生成一个类似于[1.2,1.5,18.2等]的列表,并将其分配给一个Y值,而不是N个Y值,所以所有这些都会形成一个条形图。谢谢。在解释之前,这些值确实会通过数据库,所以我会在那里检查。我将绘图生成代码放在数据库生成器脚本和数据库包装器中,它看起来完全不同,现在我知道了在哪里真正需要处理大量的数据库工具,这里是:谢谢大家!