Chuyển đổi danh sách sang mảng để sử dụng hàm ravel ()


109

Tôi có một danh sách trong python và tôi muốn chuyển đổi nó thành một mảng để có thể sử dụng ravel()hàm.


2
Vui lòng cố gắng trả lời các yêu cầu làm rõ và cải thiện câu hỏi của bạn thay vì đưa ra nhiều câu hỏi không thực sự hay. Cuối cùng, hãy đọc kỹ câu trả lời này . Tôi nghĩ nó giải quyết được vấn đề lớn của bạn ...
jorgeca

Câu trả lời:


237

Sử dụng numpy.asarray:

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

25
Trên thực tế, myarray = np.array(mylist)nên là đủ.
fgb

11
tốt, asarray nó an toàn hơn vì nó sẽ không sao chép mảng mà chỉ đơn giản trả lại, vì vậy đó là một thói quen tốt để sử dụng nó trừ khi một trong đó là chắc chắn wawnt một bản sao của dữ liệu gốc
EnricoGiampieri

1
@EnricoGiampieri, công bằng, nhưng bạn có cần phải thoát khỏi mảng này không? Tôi đoán tôi không làm theo cách bạn sẽ không nhận được một trong hai lệnh để tạo một đối tượng mảng mới.
fgb

cả hai lệnh sẽ tạo một mảng mới bắt đầu từ một danh sách, đó là điều chắc chắn, nhưng thường thì vấn đề là chuyển đổi đầu vào sang một định dạng cụ thể để áp dụng phương thức nhất định và điều này giống trường hợp của OP hơn. sử dụng asarray là một thói quen tốt trừ khi ai đó chắc chắn rằng cần một bản sao mới. chỉ cần gõ arraylà đủ, nhưng tại sao lại bỏ qua khả năng giáo dục OP thành một số thói quen tốt khi chúng ta ở đây?
EnricoGiampieri,

Tôi chỉ muốn nói rằng @fgb đã đề xuất một giải pháp thích hợp. hàm '.asarray' trả về một đối tượng numpy trong khi '.array trả về cho bạn một mảng trực tiếp. Dù sao thì, cảm ơn cả hai bạn!
Adrian Grzywaczewski

7

tạo một mảng int và một danh sách

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)

chữ "i" đại diện cho cái gì? và nó nên được gì cho str?
Dany Y

6

Tôi muốn một cách để làm điều này mà không cần sử dụng thêm một mô-đun. Đầu tiên chuyển danh sách thành chuỗi, sau đó nối vào một mảng:

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

Không thể chỉnh sửa lỗi đánh máy: hàng đầu tiên phải làdataset_list = ';'.join(input_list)
Alex Poca

2

Nếu tất cả những gì bạn muốn là gọi ravelvào danh sách (lồng nhau, tôi muốn?), Bạn có thể làm điều đó trực tiếp, numpysẽ thực hiện truyền cho bạn:

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

Cũng đáng nói rằng bạn không cần phải trải qua numpychút nào .


-1

Sử dụng mã sau:

import numpy as np

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

-13

nếu biến b có một danh sách thì bạn chỉ cần thực hiện như sau:

tạo một biến mới "a" as: a=[] sau đó gán danh sách cho "a" là:a=b

bây giờ "a" có tất cả các thành phần của danh sách "b" trong mảng.

vậy là bạn đã chuyển đổi danh sách thành mảng thành công.


8
Thực ra, không ... điều này hoàn toàn sai. Tất cả những gì bạn sẽ có là hai biến trỏ vào cùng một danh sách, không phải là một mảng phức tạp.
Ajean
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.