Tôi đã thấy một vài mã sử dụng numpy.apply_along_axis
và tôi luôn phải kiểm tra mã để xem cách hoạt động của nguyên nhân vì tôi chưa hiểu ý tưởng axis
bằng Python. Ví dụ: Tôi đã thử nghiệm this mã đơn giản từ tham chiếu.Hiểu trục trong Python
Tôi có thể thấy rằng đối với trường hợp đầu tiên, nó đã lấy cột đầu tiên của mỗi hàng của ma trận và trong trường hợp thứ hai, chính hàng được xem xét. Vì vậy, tôi xây dựng một ví dụ để kiểm tra cách nó hoạt động với một mảng ma trận (vấn đề đưa tôi đến câu hỏi trục này), mà cũng có thể được xem như là một ma trận 3d, trong đó mỗi hàng là một ma trận, phải không? Không.
a = [[[1,2,3],[2,3,4]],[[4,5,6],[9,8,7]]]
import numpy
data = numpy.array([b for b in a])
def my_func(x):
return (x[0] + x[-1]) * 0.5
b = numpy.apply_along_axis(my_func, 0, data)
b = numpy.apply_along_axis(my_func, 1, data)
nào đã cho tôi:
array([[ 2.5, 3.5, 4.5],
[ 5.5, 5.5, 5.5]])
Và:
array([[ 1.5, 2.5, 3.5],
[ 6.5, 6.5, 6.5]])
Đối với kết quả đầu tiên tôi nhận được những gì tôi mong đợi. Nhưng đối với người thứ hai, tôi mặc dù tôi sẽ nhận được:
array([[ 2., 3.],
[ 5., 8.]])
Sau đó, tôi có thể phải là một axis=2
và tôi đã nhận kết quả trước đó. Vì vậy, tôi tự hỏi làm thế nào điều này hoạt động để làm việc nó đúng cách.
Cảm ơn bạn.
Kết quả dự định của bạn là gì? –