python - 2 个 numpy 二维数组的散点图

标签 python numpy

我有 2 个 numpy 二维数组

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)

如何解决这个问题?

最佳答案

IIUC,您不需要 zip 步骤:

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

或者,只需绘制 arr1arr2 即可得到相同的结果:

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

关于python - 2 个 numpy 二维数组的散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53543931/

相关文章:

python - 在循环条件中评估表达式

python - 投票分类器导致转换 Numpy 类型错误

python - 随机打乱每行 numpy 数组中的项目

python - 我应该授权什么 url 在防火墙后面使用 pip?

python - Django - 当前 URL 与这些中的任何一个都不匹配

python - PyQt5 QMainWindow,QDockWidget,适合屏幕尺寸自动调整

python - 如何使用 scikit-learn 将多项式曲线拟合到数据?

python - 无法统一 'Mv2.3' 的 float64 和 array(float64, 1d, C) ,在 c : 处定义

python - 如果值在Python中的字典中匹配,则快速子集数组

python-3.x - 如何将标量数组转换为二维数组?