That depends on the type of data (bit width with integers or single/double precision floating point values) and if overflow can occur and should be handled.
For 16-bit int with no overflow detection and array address in ds:si:
[EDIT: Fixed wrong offsets]
AvgLoop:
; Check for end of array here
mov ax,[si]
add ax,[si+2]
add ax,[si+4]
mov cx,3
mov dx,0
div cx
mov [si],ax
mov [si+2],ax
mov [si+4],ax
add si,6
jmp AvgLoop