2012-11-22 13 views
10

Tôi gặp sự cố khi sử dụng hàm numpy.append. tôi đã viết hàm sau như một phần của một mảnh lớn của mã, Tuy nhiên, lỗi của tôi được tái tạo trong folowing:Cách sử dụng hàm numpy.append

data = [ 
     [ 
      '3.5', '3', '0', '0', '15', '6', 
      '441', 'some text', 'some more complicated data' 
     ], 
     [ 
      '4.5', '5', '1', '10', '165', '0', 
      '1', 'some other text', 'some even more complicated data' 
     ] 
     ] 

def GetNumpyArrey(self, index): 
    r = np.array([]) 
    for line in data: 
     np.append(r, float(line[index])) 

    print r 

index < 6. kết quả là:

>> [] 

gì tôi đang làm sai à?

Cảm ơn rất nhiều!

+2

http://stackoverflow.com/questions/5064822/numpy-how-to-add-items-into-an-array – avasal

+0

Như @BrenBarn chỉ ra, không có lý do gì để sử dụng 'numpy.append' tại đây. Điều hiệu quả nhất cần làm ban đầu là phân bổ 'r' thành' len (dữ liệu) '. Nếu bạn không biết trước về độ dài (ví dụ: đọc từ một tệp), thì đề xuất của @ BrenBarn về tạo danh sách và chuyển đổi thành một mảng là tốt nhất. – DaveP

Trả lời

24

Không giống như danh sách phương pháp append, numpy's append không thêm tại chỗ. Nó trả về một mảng mới với các phần tử phụ được thêm vào. Vì vậy, bạn cần phải làm r = np.append(r, float(line[index])).

Việc xây dựng các mảng có nhiều mảng theo cách này là không hiệu quả. Tốt hơn là chỉ cần xây dựng danh sách của bạn dưới dạng danh sách Python và sau đó tạo một mảng có nhiều mảng ở cuối.

+0

cảm ơn! điều đó rất hữu ích! –