แสดงรายการการแปลงอาร์เรย์เพื่อใช้ฟังก์ชัน ravel ()


109

ฉันมีรายการใน python และฉันต้องการแปลงเป็นอาร์เรย์เพื่อให้สามารถใช้ravel()ฟังก์ชันได้


2
โปรดพยายามตอบคำขอเพื่อขอคำชี้แจงและปรับปรุงคำถามของคุณแทนที่จะตั้งคำถามที่ไม่ดีมากมาย สุดท้ายอ่านอย่างละเอียดคำตอบนี้ ฉันคิดว่ามันช่วยแก้ปัญหาใหญ่ของคุณได้ ...
jorgeca

คำตอบ:


237

ใช้numpy.asarray:

import numpy as np
myarray = np.asarray(mylist)

25
ที่จริงmyarray = np.array(mylist)ควรจะเพียงพอ
fgb

11
เช่นกัน asarray จะปลอดภัยกว่าเนื่องจากจะไม่คัดลอกอาร์เรย์ แต่เพียงส่งคืนดังนั้นจึงเป็นนิสัยที่ดีที่จะใช้เว้นแต่จะแน่ใจว่าได้สำเนาข้อมูลต้นฉบับ
EnricoGiampieri

1
@EnricoGiampieri ยุติธรรม แต่คุณไม่จำเป็นต้องเอาอาร์เรย์ออกจากสิ่งนี้ไม่ว่าจะเกิดอะไรขึ้น? ฉันเดาว่าฉันไม่ทำตามวิธีที่คุณจะไม่ได้รับคำสั่งในการสร้างวัตถุอาร์เรย์ใหม่
fgb

คำสั่งทั้งสองจะสร้างอาร์เรย์ใหม่โดยเริ่มจากรายการแน่นอน แต่บ่อยครั้งที่ประเด็นคือการแปลงอินพุตเป็นรูปแบบเฉพาะเพื่อใช้วิธีการบางอย่างและดูเหมือนกรณีของ OP การใช้ asarray เป็นนิสัยที่ดีเว้นแต่จะมีความมั่นใจว่าจำเป็นต้องใช้สำเนาใหม่ แค่พิมพ์arrayก็เพียงพอแล้ว แต่ทำไมปล่อยให้ความเป็นไปได้ที่จะให้ความรู้แก่ OP ถึงนิสัยที่ดีในขณะที่เราอยู่ที่นี่?
EnricoGiampieri

ฉันแค่อยากจะบอกว่า @fgb เสนอวิธีแก้ปัญหาที่เพียงพอ ฟังก์ชัน ".asarray" จะส่งคืนวัตถุที่เป็นตัวเลขในขณะที่ ".array ส่งคืนอาร์เรย์ให้คุณโดยตรง ยังไงก็ขอบคุณพวกคุณทั้งสองคน!
Adrian Grzywaczewski

7

สร้างอาร์เรย์ int และรายการ

from array import array
listA = list(range(0,50))
for item in listA:
    print(item)
arrayA = array("i", listA)
for item in arrayA:
    print(item)

คำว่า "i" หมายถึงอะไร? และควรเป็นอย่างไรสำหรับ str?
Dany Y

6

ฉันต้องการวิธีทำสิ่งนี้โดยไม่ต้องใช้โมดูลเสริม เปลี่ยนรายการเป็นสตริงก่อนจากนั้นต่อท้ายอาร์เรย์:

dataset_list = ''.join(input_list)
dataset_array = []
for item in dataset_list.split(';'): # comma, or other
    dataset_array.append(item)

ไม่สามารถแก้ไขคำที่พิมพ์ผิดได้: แถวแรกควรเป็นdataset_list = ';'.join(input_list)
Alex Poca

2

หากสิ่งที่คุณต้องการคือการเรียกร้องravelในรายการ (ซ้อนฉันกำหนด?) ของคุณคุณสามารถทำได้โดยตรงnumpyจะทำการคัดเลือกให้คุณ:

L = [[1,None,3],["The", "quick", object]]
np.ravel(L)
# array([1, None, 3, 'The', 'quick', <class 'object'>], dtype=object)

นอกจากนี้ยังมีมูลค่าการกล่าวขวัญว่าคุณไม่จำเป็นต้องไปผ่านnumpyที่ทั้งหมด


-1

ใช้รหัสต่อไปนี้:

import numpy as np

myArray=np.array([1,2,4])  #func used to convert [1,2,3] list into an array
print(myArray)

-13

หากตัวแปร b มีรายการคุณสามารถทำสิ่งต่อไปนี้:

สร้างตัวแปรใหม่ "a" as: a=[] จากนั้นกำหนดรายการให้ "a" เป็น:a=b

ตอนนี้ "a" มีส่วนประกอบทั้งหมดของ list "b" ในอาร์เรย์

ดังนั้นคุณจึงแปลงรายการเป็นอาร์เรย์ได้สำเร็จ


8
อันที่จริงไม่ ... นี่เป็นเรื่องผิดอย่างสิ้นเชิง สิ่งที่คุณมีคือตัวแปรสองตัวที่ชี้ไปที่รายการเดียวกันไม่ใช่อาร์เรย์แบบตัวเลข
Ajean
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.