Let assume that we have X matrix as follows:
from scipy.cluster.hierarchy import linkage
Z = linkage(X, method="ward")
[[ 1. 2. 1.41421356 2. ]
[ 0. 3. 5.09901951 2. ]
[ 4. 5. 10. 4. ]]
Although this has been answered before, it was a "read the docs" answer. I think it is useful to explain the docs a bit.
From the docs, we read that:
An (n−1) by 4 matrix Z is returned. At the i-th iteration, clusters with indices Z[i, 0] and Z[i, 1] are combined to form cluster n + i. A cluster with an index less than n corresponds to one of the n original observations. The distance between clusters Z[i, 0] and Z[i, 1] is given by Z[i, 2]. The fourth value Z[i, 3] represents the number of original observations in the newly formed cluster.
I think the confusing part is the the first n clusters are singletons ("original observations"). So the first value in Z actually the n+1'th cluster. It is the first cluster to combine two singletons.
So in your example, Z is the 4+1'th cluster. We have
Z = [ 1. 2. 1.41421356 2. ]
The first two values tell us which clusters were used to create cluster Z. They are cluster_1, the singleton [1,4], and cluster_2, the singleton [2, 3].
The third value gives us the distance between the clusters. We can verify that sqrt((2-1)^2 + (3-4)^2)) = 1.41...
The fourth value tells us how many singletons are in cluster Z.
So looking at your last cluster, Z, we see that is combines the firs two clusters in Z. Each of them contains two unique singletons, so the Z[2,3] = 4.