Tôi đang sử dụng python 2.7.3, khi tôi thực hiện các đoạn mã sau:mảng NumPy, sự khác biệt giữa một/= x vs a = a/x
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a = a/float(2**16 - 1)
print a
Điều này sẽ dẫn ông sau đầu ra:
>> array([[1.52590219e-05, 3.05180438e-05, 4.57770657e-05],
>> [6.10360876e-05, 7.62951095e-05, 9.15541314e-05]])
Đúng như mong đợi, tuy nhiên khi tôi thực hiện đoạn mã sau:
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a /= float(2**16 - 1)
print a
tôi nhận được kết quả như sau:
>> array([[0, 0, 0],
>> [0, 0, 0]])
tôi mong đợi đầu ra tương tự như trong ví dụ trước, tôi không hiểu ouput khác nhau, trong đó có vẻ là một kết quả của việc sử dụng a /= float(2**16 - 1)
vs a = a/float(2**16 - 1)
.
[Tôi mở lại này . Nó liên quan đến bản sao được đề xuất ban đầu, nhưng không có câu trả lời cho câu hỏi đó giải quyết vấn đề dtype liên quan. Có lẽ một bản sao khác ở đâu đó, nhưng không phải là một.] – DSM
@DSM Đồng ý, câu hỏi được liên kết thực sự không giải thích những gì đang diễn ra ở đây. Nó giải thích lý do tại sao * có thể * là một kết quả khác, nhưng không * tại sao * nó xảy ra trong trường hợp này. – poke
Câu hỏi liên quan: [Hành vi không mong muốn đối với phân chia tự numpy] (http://stackoverflow.com/q/15907484/832621) –