2015-01-29 19 views
6

Tôi có một chuỗi như mystr = "100110" (kích thước thật lớn hơn nhiều) Tôi muốn chuyển đổi thành mảng có dạng như mynumpy = [1, 0, 0, 1, 1, 0], mynumpy.shape = (6,0), tôi biết rằng có một số lỗi là np.fromstring(mystr, dtype=int, sep=''). với mọi chữ số của nó, do đó, nó có một số. bất kỳ ý tưởng làm thế nào để chuyển đổi chuỗi của tôi để mảng numpy?Chuyển chuỗi thành mảng có dải số

Trả lời

16

list có thể giúp bạn làm điều đó.

import numpy as np 

mystr = "100110" 
print np.array(list(mystr)) 
# ['1' '0' '0' '1' '1' '0'] 

nếu bạn muốn nhận được số thay vì chuỗi:

print np.array(list(mystr), dtype=int) 
# [1 0 0 1 1 0] 
10

Bạn có thể đọc chúng như các ký tự ASCII sau đó trừ đi 48 (các giá trị ASCII của 0). Đây sẽ là cách nhanh nhất cho các chuỗi lớn.

>>> np.fromstring("100110", np.int8) - 48 
array([1, 0, 0, 1, 1, 0], dtype=int8) 

Ngoài ra, bạn có thể chuyển đổi chuỗi thành một danh sách các số nguyên đầu tiên:

>>> np.array(map(int, "100110")) 
array([1, 0, 0, 1, 1, 0]) 

Sửa: Tôi đã làm một số thời gian nhanh chóng và phương pháp đầu tiên là trên 100x nhanh hơn chuyển đổi nó vào một danh sách đầu tiên.

Các vấn đề liên quan