Первый пример работает просто отлично.Вот соответствующий код Python:
import matplotlib.pyplot as plt
import numpy as np
# Create and plot multivariate normal distribution
mean = [0, 0]
cov = [[1,0],[0,1]]
x, y = np.random.multivariate_normal(mean, cov, 100).T
plt.figure(1)
plt.plot(x, y, 'x')
plt.axis('equal')
# Generate z
def g(xy):
res_z = []
for z in xy:
z = np.array(z)
res_z.append(z / 10 + z / np.linalg.norm(z))
return res_z
xy = zip(x, y)
res_z = g(xy)
# Plot z
zx, zy = zip(*res_z)
plt.figure(2)
plt.plot(zx, zy, 'x')
plt.axis('equal')
plt.show()
и это выводит (если вы нажимаете и перетаскиваете цифры в положение, показанное ниже):
Обратите внимание, что при запуске сценария ваши выходные данные будут немного отличаться, поскольку np.random.multivariate_normal
выполняет случайную выборку из базового распределения (в среднем [0,0]
, ковариационная матрица идентичности).
Я на Anaconda 5.1.0, Python 3.6.
HTH.