Точечный график 2-х рядных двумерных массивов - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть 2 массивных двумерных массива

import numpy as np
arr1 = np.random.rand(4,4)
arr2 = np.random.rand(4, 4)

Я хочу показать диаграмму рассеяния со значениями оси x от arr1 и значениями оси y от arr2.Я попробовал это:

s = (arr1.ravel(), arr2.ravel())
x, y = zip(*s)
plt.scatter(x, y)

Но я получаю эту ошибку:

ValueError: too many values to unpack (expected 2)

Как это исправить?

1 Ответ

0 голосов
/ 29 ноября 2018

IIUC, вам не нужен шаг zip:

s = (arr1.ravel(), arr2.ravel())
plt.scatter(*s)
plt.show()

Или вы получаете то же самое, просто нанося arr1 и arr2:

plt.scatter(arr1, arr2)
plt.show()

enter image description here

Причина заключается в том, что путем архивирования вы создаете множество кортежей координат:

>>> list(zip(*s))
[(0.5233576831070681, 0.3622905772322086), (0.6771459051981418, 0.46550530512072197), (0.5836238435117137, 0.9678582465614765), (0.5215640961420361, 0.05930220671158393), (0.0671420867491811, 0.3229294577997751), (0.09453539420217905, 0.5853394743453684), (0.14945382971858256, 0.7100764985571005), (0.6097216935812977, 0.008285702808878748), (0.8008615396938863, 0.8564656781773946), (0.0012100717276920525, 0.03915037044723313), (0.5749921053520953, 0.43147487440006294), (0.5965950855156836, 0.6485170240649151), (0.00223226469849902, 0.3134990067863225), (0.6424325871844799, 0.4041957463865189), (0.06797409254523168, 0.685192515451394), (0.9485129458199039, 0.6873427463294267)]

Верные (хотя они не могут бытьупакованы в 2 переменные, потому что это 16 координатных пар), но тогда вам, по сути, нужно выполнить итерацию, чтобы построить их, что не идеально.Или вы могли бы перепаковать их, но я думаю, что это неэффективный способ сделать это:

x,y = zip(*zip(*s))
plt.scatter(x,y)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...