Chào buổi sáng.
Chúc một ngày tốt lành.
Tôi dự định triển khai hàm tổng được hiển thị trong hình bên dưới vào một khung dữ liệu trong Python:

Tôi dự định triển khai hàm tính tổng trong hình ảnh bên dưới dưới dạng khung dữ liệu trong Python:
Tôi đã thử đoạn mã dưới đây như một ví dụ đơn giản nhưng không nhận được kết quả như mong muốn:
Tôi đã thử mã bên dưới làm ví dụ hoạt động đơn giản nhưng tôi không nhận được kết quả như mong đợi:
D_data = [0,1, 0,22, 0,353, 4,25, 12,5];
trạng thái tối đa=5;
tổng_tử_số_1 = 0
tổng_tử_số_2 = 0
tổng_mẫu_số = 0
đối với i, hệ số trong enumerate(D_data):
đối với j trong phạm vi (1, trạng thái tối đa):
total_tử_số_2 += j * hệ số**2
total_numerator_1 += j * hệ số
tổng_mẫu số += I
in('lambda1:', tổng_tử_số_1 / tổng_mẫu_số)
in('lambda2:', tổng_tử_số_2 / tổng_tử_số_1)
Ví dụ, kết quả đầu ra dự kiến cho lambda1 và lambda2 là:
Ví dụ: kết quả mong đợi của lambda1 và lambda2 là:
lambda1= ((0,1*1)+(0,22*2)+(0,353*3)+(4,25*4)+(12,5*5))/(0,1+0,22+0,353+4,25+12,5)= 4,655(Xấp xỉ)
lambda2= ((0,1^2 X 1)+(0,22^2 X 2)+(0,353^2 X 3)+(4,25^2 X 4)+(12,5^2 X 5))/(0,1+0,22+0,353+4,25+12,5)= 10,530(Xấp xỉ)
Bất kỳ đề xuất trợ giúp kịp thời nào cho giải pháp đều được đánh giá cao.
Bất kỳ đề xuất trợ giúp kịp thời nào về giải pháp sẽ được đánh giá cao.
Thêm câu trả lời
bạn sẽ nhận được kết quả tương tự, vì bạn đang chia l2.sum() với l1.sum()
Bạn sẽ nhận được kết quả tương tự vì bạn chia l2.sum() cho l1.sum()
Là gì d_result['D']
?
D_RESULT['D'] là gì?
Ý tưởng là giả sử d_result['D']=[1,2,3,4,5] thì: l1=(1×1)+(2×2)+(3×3)+... và l2= (1×1^2)+(2×2^2)+(3×3^2)+... Từ ví dụ làm việc đơn giản này, lambda1 và lamba 2 phải khác nhau.
Ý tưởng là: Giả sử d_Result['D']=[1, 2, 3, 4, 5], thì: L1=(1×1)+(2×2)+(3×3)+…và L2= (1×1^2)+(2×2^2)+(3×3^2)+… Trong ví dụ hoạt động đơn giản này, lambda1 và lamba 2 phải khác nhau.
Bạn có muốn thực hiện những điều này trong một khung dữ liệu pandas không? D_dữ liệu
dữ liệu trong khung dữ liệu của bạn?
Bạn đang muốn triển khai các chức năng này trong khung dữ liệu gấu trúc? Dữ liệu có nằm trong khung dữ liệu D_DATA không?
Cũng như của bạn lambda2
phép tính sai, phải là 49.014557022326805
Ngoài ra, phép tính lambda2 của bạn sai, nó phải là 49.014557022326805
Khuyến nghị câu trả lời tuyệt vời
Cho một danh sách D
, có vẻ như bạn muốn tính toán l1 = (D[0] * 1 + D[1] * 2 + D[2] * 3 + …) / (D[0] + D[1] + D[2] + …)
, Và l2 = (D[0]**2 * 1 + D[1]**2 * 2 + D[2]**2 * 3 + ...) / (D[0] + D[1] + D[2] + ...)
Cho một danh sách D, có vẻ như bạn cần tính L1=(D[0]*1+D[1]*2+D[2]*3+...)/(D[0]+D[1 ] +D[2]+...) và L2=(D[0]**2*1+D[1]**2*2+D[2]**2*3+...)/ ( D[0]+D[1]+D[2]+...)
Trong Python thuần túy, bạn có thể viết các phép toán này như sau:
Trong Python thuần túy, bạn có thể viết các thao tác này dưới dạng:
tổng = tổng(D)
l1 = tổng(d * i cho i, d trong enumerate(D, 1)) / tổng số # 4.654709292314756
l2 = tổng(d**2 * i cho i, d trong enumerate(D, 1)) / tổng số # 49.014557022326805
Nếu bạn đang sử dụng pandas cho khung dữ liệu của mình, bạn có thể sử dụng pandas tổng hợp
để thuê ngoài việc tính toán cho bộ phận phụ trợ:
Nếu khung dữ liệu của bạn sử dụng gấu trúc, bạn có thể sử dụng tổng của gấu trúc để thuê ngoài tính toán cho phần phụ trợ:
nhập numpy dưới dạng np
nhập pandas dưới dạng pd
D_df = pd.DataFrame(D, cột=["dữ liệu"])
hệ số nhân = (np.arange(len(D_df)) + 1).reshape((-1, 1))
tổng = D_df.sum(trục=0)
lambda1 = (D_df * số nhân). tổng (trục = 0) / tổng số
lambda2 = (D_df**2 * số nhân).sum(trục=0) / tổng số
hệ số nhân
chỉ đơn giản là một vector cột (mảng hình dạng (*, 1)
) chứa các số [1, 2, 3, ..., len(D_df)]
Số nhân chỉ là một vectơ cột (mảng hình (*, 1)) chứa các số [1, 2, 3, ..., len(D_Df)]
Bạn đang cố gắng in lambda1 thay vì lambda2
Bạn đang cố in lambda1 thay vì lambda2
Thêm câu trả lời
Cảm ơn @Abinash đã phản hồi nhanh chóng. Kết quả thu được cho lambda1 và lambda2 có giá trị bằng nhau một cách bất ngờ. Đó là thách thức của tôi.
Cảm ơn bạn đã trả lời nhanh @Abinash. Kết quả thu được cho lambda1 và lambda2 có giá trị ngang nhau một cách đáng ngạc nhiên. Đó là thử thách của tôi.
Tôi là một lập trình viên xuất sắc, rất giỏi!