Numpy: npyio.loadtxt๋Š” str dtype์ด ์ง€์ •๋œ ๊ฒฝ์šฐ์—๋„ ๋ฐ”์ดํŠธ ์บ์ŠคํŒ… ํ…์ŠคํŠธ ํŒŒ์ผ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2012๋…„ 11์›” 08์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: numpy/numpy

ํ™˜๊ฒฝ

  • Python : OS X Mountain Lion์˜ ๋ฒ„์ „ 3.3 (python.org ๋ฆด๋ฆฌ์Šค)
  • numpy : git master์—์„œ ๋ณต์ œ ๋จ

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด์ด ํฌํ•จ ๋œ ํŒŒ์ผ์—์„œ numpy.loadtxt ๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ :

import numpy as np
datestxt = np.loadtxt("NYSE_dates.txt", dtype=str)
print(datetxt)

NYSE_dates.txt๋Š” ๋‹จ์ˆœํžˆ ๋‚ ์งœ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค (์‹ค์ œ๋กœ๋Š” ๋ฌด์—‡์ด๋“  ๊ฐ€๋Šฅ).

7/5/1962
7/6/1962
7/9/1962
...
12/29/2020
12/30/2020
12/31/2020

์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

["b'7/5/1962'" "b'7/6/1962'" "b'7/9/1962'" ..., "b'12/29/2020'"
 "b'12/30/2020'" "b'12/31/2020'"]

๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ชจ๋“  ๋ฌธ์ž์—ด์€ ๋ฐ”์ดํŠธ ์บ์ŠคํŒ… ๋œ ๋‹ค์Œ conv ํ†ตํ•ด ๋ฌธ์ž์—ด ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. conv & compat.asbytes ๋‹น conv str(str('12/31/2020').encode('latin1')) ์—์„œ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. compat.asbytes .

์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณธ ํ›„ ๋ชจ๋“  ๋ฌธ์ž์—ด์ด asbytes(...) ๊ฑฐ์˜ ์ „์ฒด์ ์œผ๋กœ ๋ฐ”์ดํŠธ ์บ์ŠคํŒ… ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด split_line(...) ์—์„œ์ฒ˜๋Ÿผ ์ด๋Š” ๋ชจ๋“ˆ์˜ ๋ชจ๋“  ๋ฃจํ‹ด์ด ์†์ƒ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

00 - Bug numpy.lib

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์ด 5 ๋…„ ๋™์•ˆ ๊ณ ์ณ์ง€์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด ๊ฝค ์ถฉ๊ฒฉ์ ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  11 ๋Œ“๊ธ€

๋‚˜๋„ ๊ทธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Python3์—์„œ๋Š” loadtxt๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž„์‹œ ํ•ด๊ฒฐ์ฑ… : loadtxt ๋ฉ”์„œ๋“œ์—์„œ ๋ชจ๋“  asbytes () ํ˜ธ์ถœ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ์ฝ”๋“œ๋ฅผ ํ›‘์–ด ๋ณด์•˜์„ ๋•Œ ๋ญ”๊ฐ€ ์ˆ˜์ƒ ์ฉ ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ธฐ์–ต์ด๋‚ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ก์„ ์œ„ํ•ด datetime64 ์ž…๋ ฅ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ Error parsing datetime string "b'2013-01-02'" ํ˜•์‹์˜ ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํ•ด๋‹น ์—ด์— ๋Œ€ํ•œ ๋ณ€ํ™˜๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

def decoder(input_bytes):
    return input_bytes.decode("ascii")

ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์—์„œ๋Š” ๊ดœ์ฐฎ์ง€ ๋งŒ ๊ต์œก ์ž๋ฃŒ์—๋Š” ๋งค์šฐ ์˜ˆ์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

1.11๋กœ ๋ฐ€์–ด ๋ถ™์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•-๋จผ์ € ํŒŒ์ผ์—์„œ iconv๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

1.12๋กœ ๋ฐ€์–ด ๋ถ™์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ถ”์ง„๋˜๊ณ  ์žˆ์Œ์„ ์•Œ์ง€๋งŒ ๊ทธ๊ฒƒ์€ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฒ„๊ทธ์ด๋ฉฐ ์ˆ˜์ •์ด ์‰ฝ๊ฒŒ ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด 5 ๋…„ ๋™์•ˆ ๊ณ ์ณ์ง€์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด ๊ฝค ์ถฉ๊ฒฉ์ ์ž…๋‹ˆ๋‹ค.

NumPy 1.13.3์—์„œ ์›ํ•˜๋Š”๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค (์–ด๋–ค PR์ด ๊ทธ๊ฒƒ์„ ๊ณ ์ณค๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ). ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

>>> import io
>>> import numpy as np
>>> f = io.StringIO("7/5/1962\n7/6/1962\n")
>>> np.loadtxt(f, dtype=str)
array(['7/5/1962', '7/6/1962'],
      dtype='<U8')
>>> np.__version__
'1.13.3'

# 8033์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ # 8349์—์„œ ์ˆ˜์ • ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ์‡„. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์‹œ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰