code: public static INDArray pLeftInvert(INDArray arr, boolean inPlace) {
          try {
            final INDArray inv = invert(arr.transpose().mmul(arr), inPlace).mmul(arr.transpose());
            if (inPlace) arr.assign(inv);
            return inv;
          } catch (SingularMatrixException e) {
            throw new IllegalArgumentException(
                "Full column rank condition for left pseudo inverse was not met.");
          }
      }
docs: Compute the left pseudo inverse. Input matrix must have full column rank.
  
  See also: <a href="https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse#Definition">Moore–Penrose inverse</a>
  
  @param arr Input matrix
  @param inPlace Whether to store the result in {@code arr}
  @return Left pseudo inverse of {@code arr}
  @exception IllegalArgumentException Input matrix {@code arr} did not have full column rank.