วิธีการแปลงไฟล์
["1.1", "2.2", "3.2"]
ถึง
[1.1, 2.2, 3.2]
ใน NumPy?
วิธีการแปลงไฟล์
["1.1", "2.2", "3.2"]
ถึง
[1.1, 2.2, 3.2]
ใน NumPy?
คำตอบ:
ถ้าคุณกำลังอ่านข้อมูลในรูปแบบรายการให้ทำnp.array(map(float, list_of_strings))
(หรือใช้ความเข้าใจในรายการเทียบเท่า) (ใน Python 3 คุณจะต้องเรียกlist
ใช้map
ค่าที่ส่งคืนหากคุณใช้map
เนื่องจากmap
ส่งคืนตัวทำซ้ำทันที)
อย่างไรก็ตามหากเป็นอาร์เรย์ของสตริงที่เป็นตัวเลขอยู่แล้วมีวิธีที่ดีกว่า ใช้astype()
.
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
list
. อาร์เรย์ Numpy ถูกพิมพ์โดยเจตนาเป็นเนื้อเดียวกัน ถ้าคุณต้องการจริงๆคุณสามารถใช้อาร์เรย์วัตถุ (เช่นnp.array(['apple', 1.2, 1, {'b'=None, 'c'=object()}], dtype=object)
) อย่างไรก็ตามอาร์เรย์ออบเจ็กต์ไม่มีข้อได้เปรียบที่สำคัญมากกว่าการใช้รายการ
คุณสามารถใช้สิ่งนี้ได้เช่นกัน
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
ตัวเลือกอื่นอาจเป็นnumpy.asarray :
import numpy as np
a = ["1.1", "2.2", "3.2"]
b = np.asarray(a, dtype=np.float64, order='C')
สำหรับ Python 2 *:
print a, type(a), type(a[0])
print b, type(b), type(b[0])
ที่เกิดขึ้นใน:
['1.1', '2.2', '3.2'] <type 'list'> <type 'str'>
[1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>
หากคุณมี (หรือสร้าง) สตริงเดียวคุณสามารถใช้np.fromstring :
import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring( x, dtype=np.float, sep=',' )
หมายเหตุx = ','.join(x)
แปลง x '1.1, 2.2, 3.2'
อาร์เรย์สตริง หากคุณอ่านบรรทัดจากไฟล์ txt แต่ละบรรทัดจะเป็นสตริงอยู่แล้ว