Welcome to TeX.SE! Actually, you do not need TikZ for this.
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[\left(\begin{array}{|*{5}{ccccc|}}
\hline
& & & & & 1 & & & & & & & & & & & & & & & & & & & \\
& & & & & 2 & & & & & & & & & & & & & & & & & & & \\
& & & & & \vdots & & & & & & & & & & & & & & & & & & & \\
& & & & & \vdots & & & & & & & & & & & & & & & & & & & \\
& & & & & \widehat{N} & & & & & & & & & & & & & & & & & & & \\
\hline
& & & & \widehat{N} & & & & & & 1 & & & & & & & & & & & & & & \\
& & & & \vdots & & & & & & 2 & & & & & & & & & & & & & & \\
& & & & \vdots & & & & & & \vdots & & & & & & & & & & & & & & \\
& & & & 2 & & & & & & \vdots & & & & & & & & & & & & & & \\
& & & & 1 & & & & & & \widehat{N} & & & & & & & & & & & & & & \\
\hline
& & & & & & & & & \widehat{N} & & & & & & 1 & & & & & & & & & \\
& & & & & & & & & \vdots & & & & & & 2 & & & & & & & & & \\
& & & & & & & & & \vdots & & & & & & \vdots & & & & & & & & & \\
& & & & & & & & & 2 & & & & & & \vdots & & & & & & & & & \\
& & & & & & & & & 1 & & & & & & \widehat{N} & & & & & & & & & \\
\hline
& & & & & & & & & & & & & & & & & \bullet & & & & & & & \\
& & & & & & & & & & & & & & & & & & \bullet & & & & & & \\
& & & & & & & & & & & & & & & \bullet & & & & \bullet & & & & & \\
& & & & & & & & & & & & & & & & \bullet & & & & & & & & \\
& & & & & & & & & & & & & & & & & \bullet & & & & & & & \\
\hline
& & & & & & & & & & & & & & & & & & & \widehat{N} & & & & & \\
& & & & & & & & & & & & & & & & & & & \vdots & & & & & \\
& & & & & & & & & & & & & & & & & & & \vdots & & & & & \\
& & & & & & & & & & & & & & & & & & & 2 & & & & & \\
& & & & & & & & & & & & & & & & & & & 1 & & & & & \\
\hline
\end{array}\right)\]
\end{document}

However, you could use TikZ to improve the appearance.
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\tikzset{% https://tex.stackexchange.com/a/156990/121799
dots/.style args={#1per #2}{%
line cap=round,
dash pattern=on 0 off #2/#1
}
}
\begin{document}
\[\left(\begin{array}{|*{5}{ccccc|}}
\hline
& & & & & 1 & & & & & & & & & & & & & & & & & & & \\
& & & & & \tikzmarknode{21}{2} & & & & & & & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & & & & & & & & & & & \\
& & & & & \tikzmarknode{N1}{\widehat{N}} & & & & & & & & & & & & & & & & & & & \\
\hline
& & & & \tikzmarknode{N2}{\widehat{N}} & & & & & & 1 & & & & & & & & & & & & & & \\
& & & & & & & & & & \tikzmarknode{23}{2} & & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & & & & & & & & & & & \\
& & & & \tikzmarknode{22}{2} & & & & & & & & & & & & & & & & & & & & \\
& & & & 1 & & & & & & \tikzmarknode{N3}{\widehat{N}} & & & & & & & & & & & & & & \\
\hline
& & & & & & & & & \tikzmarknode{N4}{\widehat{N}} & & & & & & 1 & & & & & & & & & \\
& & & & & & & & & & & & & & & \tikzmarknode{25}{2} & & & & & & & & & \\
& & & & & & & & & & & & & & & & & & & & & & & & \\
& & & & & & & & & \tikzmarknode{24}{2} & & & & & & & & & & & & & & & \\
& & & & & & & & & 1 & & & & & & \tikzmarknode{N5}{\widehat{N}} & & & & & & & & & \\
\hline
& & & & & & & & & & & & & & & & & \bullet & & & & & & & \\
& & & & & & & & & & & & & & & & & & \bullet & & & & & & \\
& & & & & & & & & & & & & & & \bullet & & & & \bullet & & & & & \\
& & & & & & & & & & & & & & & & \bullet & & & & & & & & \\
& & & & & & & & & & & & & & & & & \bullet & & & & & & & \\
\hline
& & & & & & & & & & & & & & & & & & & \tikzmarknode{N6}{\widehat{N}} & & & & & \\
& & & & & & & & & & & & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & & & & & & & & & & & \\
& & & & & & & & & & & & & & & & & & & \tikzmarknode{26}{2} & & & & & \\
& & & & & & & & & & & & & & & & & & & 1 & & & & & \\
\hline
\end{array}\right)\]
\begin{tikzpicture}[overlay,remember picture]
\foreach \X in {1,...,6}
{\draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt] (2\X) -- (N\X);}
\end{tikzpicture}
\end{document}

ADDENDUM: In an attempt to make Ryan Reich a bit happy, here is a version in which you only have to specify the nonempty entries of this sparse array. These entries are determined by the list {6/1/1,6/2/2,6/5/\widehat{N},... }, where each entry has the structure <X>/<Y>/<entry> with X and Y specifying the position. Notice that one could shorten this further if you really have only one type of columns, but the point here is to allow to build arbitrary sparse matrices of that type. This code uses this answer.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}
\usepackage{etoolbox}
\tikzset{% https://tex.stackexchange.com/a/156990/121799
dots/.style args={#1per #2}{%
line cap=round,
dash pattern=on 0 off #2/#1
}
}
\begin{document}
\edef\mylist{6/1/1,6/2/2,6/5/\widehat{N},%
5/6/\widehat{N},5/9/2,5/10/1,%
11/6/1,11/7/2,11/10/\widehat{N},%
10/11/\widehat{N},10/12/2,10/15/1,%
16/11/1,16/12/2,16/15/\widehat{N},%
20/21/\widehat{N},20/22/2,20/25/1%
}
\begin{tikzpicture}
\let\mymatrixcontent\empty
\foreach \Y in {1,...,25}{%
\foreach \X in {1,...,25}
{\xdef\tmp{{}}
\foreach \XX/\YY/\ZZ in \mylist
{\ifnum\XX=\X
\ifnum\YY=\Y
\xdef\tmp{\ZZ}
\fi
\fi}
\ifnum\X=25
\expandafter\gappto\expandafter\mymatrixcontent\expandafter{\tmp\space\\}%
\else
\expandafter\gappto\expandafter\mymatrixcontent\expandafter{\tmp\space\&\space}%
\fi
}
}
\matrix [matrix of math nodes,ampersand replacement=\&,left delimiter=(,
right delimiter=),draw,row sep=3pt] (mat) {
\mymatrixcontent
};
\foreach \X [evaluate=\X as \Y using {int(\X+1)}]in {5,10,...,20}
{\coordinate (aux1) at ($(mat-1-\Y.west)!0.5!(mat-1-\X.east)$);
\coordinate (aux2) at (mat-\X-1.south);
\draw (mat.north -| aux1) -- (mat.south -| aux1)
(mat.west |- aux2) -- (mat.east |- aux2);}
\foreach \X/\Y [evaluate=\Y as \Z using {int(\Y+3)}] in
{6/2,5/6,11/7,10/12,16/12,20/22}
{\draw[very thick, dots=8 per 1cm,shorten >=3pt,shorten <=3pt]
(mat-\Y-\X) -- (mat-\Z-\X);}
\draw[line width=1.2mm, dots=4 per 1cm]
(mat-16-18.center) -- (mat-18-20.center)
(mat-18-16.center) -- (mat-20-18.center);
\end{tikzpicture}
\end{document}
