Finding TN,FN, TP, and FN for arrays using confusion matrix
1) Your code :

Expected inputs for confusion matrix

sklearn.metrics.confusion_matrix expect $y_{pred}$ and $y_{true}$ to be $(n\_samples,)$ shape. : 


  y_true array-like of shape (n_samples,)
    Ground truth (correct) target values.
  
  y_pred array-like of shape (n_samples,)
    Estimated targets as returned by a classifier.


Results of argmax on your matrix :

The argmax function on your test and prediction array is :
for each row, where is the first (max element) of the row.
So let's take the first four rows of your test set : 

TestArray = np.array(
[
[1,0,0,1,0,1,1,0,1,0,1,1,0,0,1,1,1,0,0,1],
[0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,1,1,0,1,1],
[1,0,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0],
[0,1,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,1,1,1],...]


Argmax returns : 
[0, 1, 0, 1, ...]
Wich is the locations of the first 1 in each row. I imagine this is not what you expected.

2) What I propose :

If you want to get a confusion matrix that sums up to $(n_{rows}$ x $n_{columns})$ you have to ravel the inputs :

cm=confusion_matrix(TestArray.ravel(), PredictionArray.ravel())
TN = cm[0][0]
FN = cm[1][0]
TP = cm[1][1]
FP = cm[0][1]

print(TN,FN,TP,FP)


returns (sum up to 200) : 

74 28 73 25