Mpld3: xticksλ₯Ό μ‚¬μš©ν•  λ•Œ "TypeError: *** is not JSON serializable"

에 λ§Œλ“  2014λ…„ 05μ›” 11일  Β·  29μ½”λ©˜νŠΈ  Β·  좜처: mpld3/mpld3

xticks 인수λ₯Ό μ‚¬μš©ν•  λ•Œ νŒ¬λ” ν”Œλ‘―μ„ λ§Œμ§€μž‘κ±°λ¦¬λ‹€κ°€ 이 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

κ°œλ… 증λͺ…은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
http://nbviewer.ipython.org/gist/edvakf/a47a41ace10afbd891ff
(http://pandas.pydata.org/pandas-docs/stable/visualization.html μˆ˜μ •)

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 라인을 μΆ”κ°€ν•˜μ—¬ 이것을 κ³ μ³€λ‹€.

elif isinstance(obj, (numpy.ndarray,)):
        return obj.tolist()

/mpld3/_display.py둜: NumpyEncoder

λͺ¨λ“  29 λŒ“κΈ€

μ•„ - mplexporter 이 xticksκ°€ λͺ©λ‘μ΄λΌκ³  잘λͺ» κ°€μ •ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. λ²„κ·Έμž…λ‹ˆλ‹€.

κ·Έλ™μ•ˆ xticksλ₯Ό λͺ©λ‘μœΌλ‘œ μˆ˜λ™μœΌλ‘œ λ³€ν™˜ν•˜λ©΄ μž‘λ™ν•©λ‹ˆλ‹€.

사싀은 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. 즉, λ‹€μŒμ€ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

fig = plt.figure()
ax = fig.add_subplot(111, xticks=np.arange(11))
ax.plot([0, 10], [0, 10], '-k')
mpld3.show()

PandasλŠ” μ—¬κΈ°μ—μ„œ ν‹±μœΌλ‘œ μ΄μƒν•œ 일을 ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 2000 κ°€ 직렬화할 수 μ—†λ‹€λŠ” 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€. μ΄λŠ” 미친 μ§“μž…λ‹ˆλ‹€. Pandasμ—λŠ” 직렬화할 수 μ—†λŠ” 뢀동 μ†Œμˆ˜μ  μœ ν˜•μ΄ λ‚΄μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆκΉŒ?

숫자 2000이 μ•„λ‹ˆλΌ μ—°λ„μž…λ‹ˆλ‹€. datetime 지μ˜₯에 μ˜€μ‹  것을 ν™˜μ˜ν•©λ‹ˆλ‹€.
(2014λ…„ 6μ›” 19일 νŽΈμ§‘: datetime κ°€ 문제인 것에 λŒ€ν•΄ μ œκ°€ 잘λͺ» μ•Œκ³  μžˆμ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€...)

μ–΄... μ–΄λ–»κ²Œ ν•˜λŠ”κ²Œ 제일 쒋을지 λͺ¨λ₯΄κ² λ„€μš”. μ΄κ²¬μžˆλŠ” μ‚¬λžŒ?

to_json μ—μ„œ pandas to_json λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 도움이 λ©λ‹ˆκΉŒ?

http://pandas.pydata.org/pandas-docs/dev/io.html#date -handling

νŒ¬λ”μ—μ„œ to_json을 μ‚¬μš©ν•˜λŠ” 것이 도움이 λ©λ‹ˆκΉŒ?

μ•„λ§ˆλ„, ν•˜μ§€λ§Œ 그러면 μ½”λ“œ λ‚΄μ˜ λ§Žμ€ 일에 λŒ€ν•΄ try ... except 문을 μˆ˜ν–‰ν•΄μ•Ό ν•  κ²ƒμž…λ‹ˆλ‹€(즉, 값이 Pandas λ³€μˆ˜μΈ 경우 λ‹€μŒμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ) 그런 λ‹€μŒ μžλ°”μŠ€ν¬λ¦½νŠΈ 츑의 μΆ• λ ˆμ΄λΈ”μ΄ Pandasκ°€ 좜λ ₯ν•˜κΈ°λ‘œ κ²°μ •ν•œ λͺ¨λ“  JSON ꡬ쑰λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. λ‚˜λŠ” 맀우 μ·¨μ•½ν•œ μ†”λ£¨μ…˜κ³Ό μœ μ§€ 관리 μ•…λͺ½μ²˜λŸΌ 듀리기 λ•Œλ¬Έμ— κ·ΈλŸ¬ν•œ μˆ˜μ€€μ˜ λ³΅μž‘μ„±μ„ μΆ”κ°€ν•˜μ§€ μ•ŠλŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€.

λ‚΄κ°€ μ°Έμ‘°. 이것은 Python이 μ‚¬μš©μž μ •μ˜ ν΄λž˜μŠ€μ— λŒ€ν•œ json 직렬화 방법을 λ…ΈμΆœν•  수 μ—†λ‹€λŠ” 점으둜 μš”μ•½λ©λ‹ˆλ‹€. 이 문제λ₯Ό 닫을 수 μžˆμŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” 그것을 μ—΄μ–΄ λ‘μ–΄μ•Όν•©λ‹ˆλ‹€ ... 이것을 μ²˜λ¦¬ν•˜λŠ” 더 쒋은 λ°©λ²•μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것에 λŒ€ν•΄ μƒκ°ν•©λ‹ˆλ‹€.

μž μ‹œλ§Œμš”. Python 2.7μ—μ„œ 잘 μž‘λ™ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. Python3μ—λ§Œ 해당될 수 μžˆμŠ΅λ‹ˆκΉŒ?

In [56]: matplotlib.__version__
Out[56]: '1.3.1'

In [57]: pandas.__version__
Out[57]: '0.13.1'

μ—¬λŸ¬λΆ„ μ•ˆλ…•ν•˜μ„Έμš”,
관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ 이 seaborn κ·Έλž˜ν”„λ₯Ό 그릴 λ•Œ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. http://www.stanford.edu/~mwaskom/software/seaborn/examples/many_facets.html

mpld3.fig_to_html(grid.fig, 'test.html')
/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/mplexporter/exporter.py:82: UserWarni ng: Blended transforms not yet supported. Zoom behavior may not work as expected.
  warnings.warn("Blended transforms not yet supported. "
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/_display.py", line 236, in fig_to_html
    figure_json=json.dumps(figure_json),
  File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python2.7/json/encoder.py", line 178, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: 0 is not JSON serializable

λ¬Έμ œλŠ” numpy.int64 μˆ«μžκ°€ λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©λ˜λ©° 기본적으둜 json을 직렬화할 수 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
이λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ json.JSONEncoderλ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ λΌμ΄λΈŒλŸ¬λ¦¬μ— 후크가 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

아이디어λ₯Ό μœ„ν•œ 곡간 제곡:

λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ§€λ§Œ mpld3을 μ‚¬μš©ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš© 쀑인 ν”„λ‘œμ νŠΈμ˜ λ°±μ—”λ“œλ‘œ μ‚¬μš©ν•˜λŠ” Django에 μ—°κ²°λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

numpy 배열을 μ§λ ¬ν™”ν•˜λ €κ³  μ‹œλ„ν–ˆλŠ”λ° django 1.6을 μ‚¬μš©ν•  λ•Œ 이 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 1.5둜 λ‹€μš΄ κ·Έλ ˆμ΄λ“œν–ˆκ³  μž‘λ™ν•©λ‹ˆλ‹€. κ·Έ μ΄μœ λŠ” 1.6 이상뢀터 직렬화가 json으둜 μˆ˜ν–‰λ˜λŠ” 반면 1.5 μ΄ν•˜μ—μ„œλŠ” Pickle을 톡해 μˆ˜ν–‰λ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

이것이 λ¬Έμ œκ°€ 될 수 μžˆμŒμ„ μ°ΎλŠ” 데 도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€.

λ©”λ“œ 벀리그 νžμ„Ό,
제라λ₯΄λ„ 데 라 리바 μ—μŠ€ν”Όλ…Έμ‚¬
HΓΈgskolektor
HΓΈgskolen i GjΓΈvik
e-post: 제라λ₯΄λ„. [email protected]
λͺ¨λΉŒ: +47 950 13 322

2014λ…„ 6μ›” 19일 16μ‹œ 56뢄에 lvasseur [email protected]μ—μ„œ λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

μ—¬λŸ¬λΆ„ μ•ˆλ…•ν•˜μ„Έμš”,
관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ 이 seaborn κ·Έλž˜ν”„λ₯Ό 그릴 λ•Œ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. http://www.stanford.edu/~mwaskom/software/seaborn/examples/many_facets.html

mpld3.fig_to_html(grid.fig, 'test.html')
/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/mplexporter/exporter.py:82: UserWarni ng: ν˜Όν•© λ³€ν™˜μ€ 아직 μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν™•λŒ€/μΆ•μ†Œ λ™μž‘μ΄ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
warnings.warn("ν˜Όν•© λ³€ν™˜μ€ 아직 μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. "
역좔적(κ°€μž₯ 졜근 호좜 λ§ˆμ§€λ§‰):
파일 "", 1ν–‰, μ—μ„œ
파일 "/home/vagrant/graph/local/lib/python2.7/site-packages/mpld3/_display.py", 236ν–‰, fig_to_html
figure_json=json.dumps(Figure_json),
파일 "/usr/lib/python2.7/json/__init__.py", 231ν–‰, 덀프
λ°˜ν™˜ _default_encoder.encode(obj)
파일 "/usr/lib/python2.7/json/encoder.py", 201ν–‰, 인코딩
청크 = self.iterencode(o, _one_shot=True)
iterencode의 파일 "/usr/lib/python2.7/json/encoder.py", 264ν–‰
λ°˜ν™˜ _iterencode(o, 0)
파일 "/usr/lib/python2.7/json/encoder.py", 178ν–‰, 기본적으둜
μƒμŠΉ TypeError(repr(o) + "λŠ” JSON 직렬화 λΆˆκ°€λŠ₯")
TypeError: 0은 JSON을 직렬화할 수 μ—†μŠ΅λ‹ˆλ‹€.
λ¬Έμ œλŠ” numpy.int64 μˆ«μžκ°€ λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©λ˜λ©° 기본적으둜 json을 직렬화할 수 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
이λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ json.JSONEncoderλ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•΄ λΌμ΄λΈŒλŸ¬λ¦¬μ— 후크가 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

β€”
이 이메일에 직접 νšŒμ‹ ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.

참고둜,

    from json import JSONEncoder
    class MyEncoder(JSONEncoder):
        def default(self, obj):
            if isinstance(obj, numpy.int64):
                return int(obj)
            return JSONEncoder.default(self, obj)

    return template.render(figid=json.dumps(figid),
                           d3_url=d3_url,
                           mpld3_url=mpld3_url,
                           figure_json=json.dumps(figure_json, cls=MyEncoder),
                           extra_css=extra_css,
                           extra_js=extra_js)

/mpld3/_display.py의 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€: fig_to_html

μ§€κΈˆμ€ μ‹œλ„ν•  μ‹œκ°„μ΄ μ—†μ§€λ§Œ 이것이 문제이고 μ†”λ£¨μ…˜μ˜ μ˜¬λ°”λ₯Έ λ°©ν–₯인 것 κ°™μŠ΅λ‹ˆλ‹€. json.dump λ¬Έμ„œ λ₯Ό 보면 default μ˜΅μ…˜μ΄ μžˆλŠ” μ•½κ°„ 더 κ°€λ²Όμš΄ μ†”λ£¨μ…˜μ΄ μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ κ²°κ΅­μ—λŠ” ν•œ μ€„λ§Œ 더 짧을 수 μžˆμŠ΅λ‹ˆλ‹€. ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό ν•  μ€€λΉ„κ°€ λ˜μ—ˆλ‚˜μš”?

λ‚˜λŠ” 이것이 PR #213에 μ˜ν•΄ μˆ˜μ •λ  것이라고 μ˜ˆμƒν–ˆμ§€λ§Œ , μ›λž˜ κ²Œμ‹œλ¬Όμ˜ ipython λ…ΈνŠΈλΆ 은 μ—¬μ „νžˆ β€‹β€‹λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ‹œλ„ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” 이것을 μ–΄λŠ μ‹œμ μ—μ„œ μ‹œλ„ ν•  것이닀

μ—¬μ „νžˆ 이것 λ•Œλ¬Έμ— ν˜Όλž€μŠ€λŸ½μŠ΅λ‹ˆλ‹€... #213이 μ‹€μ œλ‘œ μ—¬κΈ°μ—μ„œ μˆ˜μ •ν•œ 것이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그것 없이 int64 개체λ₯Ό 직렬화할 수 μžˆμŠ΅λ‹ˆλ‹€ ...

ν•΄κ²°λ˜μ—ˆλ‚˜μš”?
λ‚˜λŠ” fig_to_html νŒ¬λ” 생성 그림을 λ³Ό 수 μ—†μŠ΅λ‹ˆλ‹€ ( TypeError: 0 is not JSON serializable μ–»μŠ΅λ‹ˆλ‹€). 그림이 잘 μƒμ„±λ©λ‹ˆλ‹€.
plt.barλ₯Ό μ‚¬μš©ν•˜μ—¬ μž¬μ‹œλ„ν•  λ•Œ μ‚¬μš©μž 지정 λ¬Έμžμ—΄κ³Ό ν•¨κ»˜ yticksλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λ„ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

ν•΄κ²° 방법?

ν™•μ‹€ν•˜μ§€ μ•Šλ‹€. μΆ• λ ˆμ΄λΈ”μ΄ 직렬화할 수 μ—†λŠ” μ •μˆ˜ λ²„μ „μ΄λΌλŠ” λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ•Œμ•„λ‚Έ 것이 있으면 μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

μ‚¬μš©ν•  λ•Œμ΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€λŠ” 점을 μ§€μ ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€.

dates = df.Date.apply(lambda dt: dt.strftime('%B')[:3] + dt.strftime(' %d')).values
plt.xticks(x, dates, rotation='vertical')

ν•˜μ§€λ§Œ ν•¨κ»˜

ax.set_xticklabels(dates, rotation='vertical')

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

νŽΈμ§‘: μΆ”κ°€ κ²€μ‚¬μ—μ„œ ν›„μž 버전은 였λ₯˜λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ§€λ§Œ κ²°κ³Ό 그림의 xticksλŠ” μ‹€μ œλ‘œ μ„€μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

νŽΈμ§‘ 2: λ‚΄ λ‚˜μœ, 방금 틱이 μ§€μ›λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€(#22).

FWIWμ—μ„œ boxplotsλ₯Ό μ‚¬μš©ν•˜λ©΄ 문제λ₯Ό μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import numpy as np, mpld3
np.random.seed(937)
data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
labels = list('ABCD')
fs = 10  # fontsize

fig, axes = plt.subplots(1, 1, figsize=(6, 6)) 
axes.boxplot(data, labels=labels)
axes.set_title('Default', fontsize=fs)

html_fig = mppld3.fig_to_html(fig)

특히, λ‹€μŒμ€ pip freeze의 λ²„μ „μž…λ‹ˆλ‹€.

cycler==0.10.0
Jinja2==2.8
MarkupSafe==0.23
matplotlib==1.5.1
mpld3==0.2
numpy==1.10.4
pandas==0.17.1
ptyprocess==0.5.1
pyparsing==2.1.0
python-dateutil==2.5.0
pytz==2015.7
six==1.10.0
wheel==0.29.0

파이썬 3.4.3의 경우.

@lvasseurκ°€ μ œμ•ˆν•œ νŒ¨μΉ˜κ°€ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 것 κ°™μ§€λ§Œ _the_ μ†”λ£¨μ…˜μΈμ§€λŠ” λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

μ›λž˜ μ˜ˆμ œκ°€ μž‘λ™ν•˜λ„λ‘ ν•˜λ €λ©΄ np.arange(2000,2002,1) λŒ€μ‹  [float(x) for x in range(2000,2002)]λ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ 이 seaborn κ·Έλž˜ν”„λ₯Ό 그릴 λ•Œ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. http://www.stanford.edu/~mwaskom/software/seaborn/examples/many_facets.html

seaborn barplot 그림에 λŒ€ν•΄ mtld3.display(fig) λ₯Ό μ‹œλ„ν•˜λŠ” λ™μ•ˆ λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

TypeError: 0은 JSON을 직렬화할 수 μ—†μŠ΅λ‹ˆλ‹€.

λˆ„κ΅¬λ‚˜ mpld3둜 seaborn ν”Œλ‘―μ„ λ Œλ”λ§ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

이것은 데이터 값에 nan 이 있기 λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. _display.py:243 μ—μ„œ
figure_json dictμ—μ„œ nan λ₯Ό None 둜 λ°”κΎΈλ©΄ μ˜ˆμƒλ˜λŠ” 좜λ ₯이 λ‚˜μ˜΅λ‹ˆλ‹€.

νŽΈμ§‘: μœ„μ˜ λ°©λ²•μœΌλ‘œ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€(디버그 μΈν„°ν”„λ¦¬ν„°μ—μ„œ ν…ŒμŠ€νŠΈν–ˆμ§€λ§Œ μž‘λ™ν–ˆμ§€λ§Œ mpld3을 μ‚¬μš©ν•  λ•ŒλŠ” 그렇지 μ•ŠμŒ).
λ”°λΌμ„œ sns.barplot() λ Œλ”λ§ plt.bar() μž‘λ™ν•˜μ§€ μ•Šμ§€λ§Œ plt.bar() μž‘λ™ν•©λ‹ˆλ‹€. 두 ν”Œλ‘―μ˜ μˆ˜μΉ˜μ—μ„œ λͺ…λ°±ν•œ 차이λ₯Ό λ³Ό 수 μ—†μ—ˆμ§€λ§Œ 제곡된 패치(https://github.com/mpld3/mpld3/pull/213)둜 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 라인을 μΆ”κ°€ν•˜μ—¬ 이것을 κ³ μ³€λ‹€.

elif isinstance(obj, (numpy.ndarray,)):
        return obj.tolist()

/mpld3/_display.py둜: NumpyEncoder

@jaklinger κ°μ‚¬ν•©λ‹ˆλ‹€.

@jaklinger , μ•ˆλ…•ν•˜μ„Έμš”. μ œμ•ˆν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μ™„λ²½ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€! ν•œ 가지λ₯Ό λͺ…ν™•νžˆ ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. numpy 배열을 μ‚¬μ „μœΌλ‘œ λ³€ν™˜ν•˜κ³  λ°˜ν™˜ν•˜λ €κ³  ν–ˆμ§€λ§Œ 사전에 λ¬Έμ œκ°€ μ—†μ—ˆμ§€λ§Œ μΈμ‡„ν•˜κ³  ν™•μΈν–ˆμ§€λ§Œ "float 32 is not json serializable" 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. tolist() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 배열을 파이썬 λͺ©λ‘μœΌλ‘œ λ³€ν™˜ν–ˆμŠ΅λ‹ˆλ‹€.
이전 :[100. 0. 0. 0. 0.]
with tolist: [100.0, 0.0, 0.0, 0.0, 0.0] μ™„λ²½ν•˜κ²Œ λ°˜ν™˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
κ·Έλ ‡λ‹€λ©΄ λ¬Έμ œκ°€ μ •ν™•νžˆ λ¬΄μ—‡μ΄μ—ˆμŠ΅λ‹ˆκΉŒ? 미리 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

@padmaksha18 무슨 말인지 100% ν™•μ‹ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

numpy 배열을 μ‚¬μ „μœΌλ‘œ λ³€ν™˜

ν•˜μ§€λ§Œ (κ°„λ‹¨νžˆ) numpy 및 python μœ ν˜•μ€ λ™μΌν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€( float32 λŠ” float 와 λ™μΌν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. array λŠ” list λ“±κ³Ό 같지 μ•ŠμœΌλ©° JSONEncoder 클래슀 λŠ” κΈ°λ³Έ python μœ ν˜•λ§Œ 'ν—ˆμš©'ν•©λ‹ˆλ‹€. λ”°λΌμ„œ... 이 ν•¨μˆ˜ (μƒˆ μˆ˜μ • 사항 포함)의 μš”μ μ€ μž…λ ₯ obj λ₯Ό κΈ°λ³Έ python ν•΄λ‹Ήν•˜λŠ” ν•­λͺ©μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

@jaklinger :μ•ˆλ…• Joel, λ‹€μ‹œ ν•œ 번 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. μ‚¬μ „μœΌλ‘œ λ³€ν™˜ν•œλ‹€λŠ” 것은 μ΄λŸ¬ν•œ λ°°μ—΄ 두 개λ₯Ό κ°€μ Έμ™€μ„œ ν‚€ κ°’ μŒμ„ ν˜•μ„±ν–ˆλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€. λͺ…ν™•ν•˜κ²Œ μ„€λͺ…ν•˜μ§€ λͺ»ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€. 이 점을 λΆ„λͺ…νžˆ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ¨Όμ € λ„€μ΄ν‹°λΈŒ 파이썬 μœ ν˜•μœΌλ‘œ λ³€ν™˜ν•΄μ•Ό ν•˜κ³  그것이 λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€. 사전을 jsonifyν•˜μ§€ μ•Šκ³  μžˆλŠ” κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•˜λ €κ³  ν•˜λ©΄ jsonencoder ν΄λž˜μŠ€κ°€ 그림에 λ‚˜νƒ€λ‚ κΉŒμš”? κ°μ‚¬ν•©λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰