簡體   English   中英

2dHistogram:ValueError:太多值無法解包(預期2)

[英]2dHistogram: ValueError: too many values to unpack (expected 2)

我正在嘗試根據散點圖創建2D直方圖。 但是我得到了error: ValueError: too many values to unpack (expected 2)使用下面的代碼error: ValueError: too many values to unpack (expected 2)

如果我更改輸入數據以包含一個xy坐標列表,則可以正常工作。 如果我僅選擇2dhistogram行中的第一個列表,它也可以工作。 例如zi, xi, yi = np.histogram2d(x[0], y[0], bins=bins)

import matplotlib.pyplot as plt
import numpy as np
import random
from functools import partial

##create list of lists (x,y coordinates)
x_list = partial(random.sample, range(80), 10)
y_list = partial(random.sample, range(80), 10)
x = [x_list() for _ in range(10)]
y = [y_list() for _ in range(10)]

fig, ax = plt.subplots()
ax.set_xlim(0,80)
ax.set_ylim(0,80)

bins = [np.linspace(*ax.get_xlim(), 80),
        np.linspace(*ax.get_ylim(), 80)]

##error occurs in this line
zi, xi, yi = np.histogram2d(x, y, bins=bins)
zi = np.ma.masked_equal(zi, 0)

ax.pcolormesh(xi, yi, zi.T)    
ax.set_xticks(bins[0], minor=True)
ax.set_yticks(bins[1], minor=True)
ax.grid(True, which='minor')

scat = ax.scatter(x, y, s = 1)

我可以找到的關於此的唯一文章建議嘗試將x,y更改為numpy數組。 我試過了,但仍然得到相同的錯誤代碼。

zi, xi, yi = np.histogram2d(np.asarry(x), np.asarray(y), bins=bins)

還有其他建議嗎?

np.histogram2d需要xy坐標的平面列表,而不是列表列表。 您可以輕松解決此問題。 只需將填充xy的行更改為扁平化列表理解即可

x = [num for _ in range(10) for num in x_list()]
y = [num for _ in range(10) for num in y_list()]

另外,您可以跳過使用random.samplepartial的整個復雜性,而只需使用np.random.randint ,它可以創建任何給定形狀的隨機整數數組:

x = np.random.randint(0, 80, size=100)
y = np.random.randint(0, 80, size=100)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM