code: def mkIndexedArr(unparsedArr,nnGeneIndex):
      '''
      Function returns ndarray of gene expression values from ndarray of unmodified data set and ndarray of gene indices
      :param unparsedArr: numpy ndarray of unmodified data set
      :param nnGeneIndex: numpy ndarray of indices of genes of interest
      :return nnGeneExp:  numpy ndarray of data set including all cells and expression data only of genes of interest 
      '''
      nnGeneExp=np.zeros([unparsedArr.shape[0],nnGeneIndex.shape[0]],dtype=float) #initializes new array for output
      for i in range(0,nnGeneIndex.shape[0]): #fill in the new array based on indices of interest
          nnGeneExp[:,i]=unparsedArr[:,nnGeneIndex[i]]
      return nnGeneExf mkIndexedArr(unparsedArr,nnGeneIndex):
      '''
      Function returns ndarray of gene expression values from ndarray of unmodified data set and ndarray of gene indices
      :param unparsedArr: numpy ndarray of unmodified data set
      :param nnGeneIndex: numpy ndarray of indices of genes of interest
      :return nnGeneExp:  numpy ndarray of data set including all cells and expression data only of genes of interest 
      '''
      nnGeneExp=np.zeros([unparsedArr.shape[0],nnGeneIndex.shape[0]],dtype=float) #initializes new array for output
      for i in range(0,nnGeneIndex.shape[0]): #fill in the new array based on indices of interest
          nnGeneExp[:,i]=unparsedArr[:,nnGeneIndex[i]]
      return nnGeneExp
docs: Function returns ndarray of gene expression values from ndarray of unmodified data set and ndarray of gene indices
      :param unparsedArr: numpy ndarray of unmodified data set
      :param nnGeneIndex: numpy ndarray of indices of genes of interest
      :return nnGeneExp:  numpy ndarray of data set including all cells and expression data only of genes of interest