ฉันจะแปลงอาร์เรย์NumPyเป็นรายการ Python (ตัวอย่าง[[1,2,3],[4,5,6]]
) ได้อย่างไรและทำได้เร็วพอสมควร
ฉันจะแปลงอาร์เรย์NumPyเป็นรายการ Python (ตัวอย่าง[[1,2,3],[4,5,6]]
) ได้อย่างไรและทำได้เร็วพอสมควร
คำตอบ:
การใช้tolist()
:
import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]
โปรดทราบว่าสิ่งนี้จะแปลงค่าจากประเภทใดก็ได้ที่มีอยู่ (เช่น np.int32 หรือ np.float32) เป็น "ประเภท Python ที่ใช้งานได้ใกล้เคียงที่สุด" (ในรายการ) หากคุณต้องการที่จะรักษาชนิดข้อมูล numpy คุณสามารถเรียกรายการ () บนอาร์เรย์ของคุณแทนและคุณจะจบลงด้วยรายการของสเกลา numpy (ขอบคุณ Mr_and_Mrs_D ที่ชี้ให้เห็นในความคิดเห็น)
myarray.astype(np.int32).tolist()
นั้นจะเป็นตัวเลือกและชัดเจนเกี่ยวกับสิ่งที่คุณพยายามจะทำให้สำเร็จ (และท้ายที่สุดlist(array_of_type_float32)
อย่าให้จำนวนเต็มตรงนี้เมื่อฉันลอง ... ฉันไม่รู้ว่าคุณกำลังถามอะไร)
float32_array = np.array([0.51764709], np.float32); print(float32_array.tolist()); print(list(float32_array))
np.array([[0, 'one'], ['two', 3]]).tolist() -> [['0', 'one'], ['two', '3']]
กระบวนการ numpy .tolist สร้างรายการที่ซ้อนกันถ้ารูปร่างอาร์เรย์ numpy เป็น 2D
หากต้องการแสดงรายการแบบเรียบวิธีการด้านล่างจะใช้งานได้
import numpy as np
from itertools import chain
a = [1,2,3,4,5,6,7,8,9]
print type(a), len(a), a
npa = np.asarray(a)
print type(npa), npa.shape, "\n", npa
npa = npa.reshape((3, 3))
print type(npa), npa.shape, "\n", npa
a = list(chain.from_iterable(npa))
print type(a), len(a), a`
tolist()
ทำงานได้ดีแม้ว่าจะเจออาเรย์ซ้อนกันแล้วให้พูดว่านุ่นDataFrame
;
my_list = [0,1,2,3,4,5,4,3,2,1,0]
my_dt = pd.DataFrame(my_list)
new_list = [i[0] for i in my_dt.values.tolist()]
print(type(my_list),type(my_dt),type(new_list))
someList = [list(map(int, input().split())) for i in range(N)]
c = np.array ([[1,2,3], [4,5,6]])
list(c.flatten())
tolist
จะแปลงเป็นfloats
s - อาจไม่ต้องการ ใช้list(myarray)
ไม่ได้ทนทุกข์ทรมานจากนี้ - เหตุผลที่เราควรจะเลือกtolist
?