我们从Python开源项目中,提取了以下4个代码示例,用于说明如何使用numpy.tril_indices_from()。
def get_adjacency_matrix(out_dir, sid, expt_id): "Returns the adjacency matrix" vec_path = pjoin(out_dir, sid, '{}_graynet.csv'.format(expt_id)) edge_vec = np.genfromtxt(vec_path) matrix_size = np.int64( (1.0 + np.sqrt(1.0+8.0*len(edge_vec)))/2.0 ) edge_mat = np.zeros([matrix_size, matrix_size]) # making this symmetric as required by nilearn's plot_connectome (stupid) # upper tri; diag +1; # lower tri; diag -1 upper_tri = np.triu_indices_from(edge_mat, +1) lower_tri = np.tril_indices_from(edge_mat, -1) edge_mat[upper_tri] = edge_vec edge_mat[lower_tri] = edge_mat.T[lower_tri] return edge_mat
def _data_iter_ma(self, data, randomize): if data is None: data_ma = self.frontend.data_ma else: data_ma = data order = np.arange(data_ma.size).reshape(data_ma.shape) masked = order[data_ma.mask] if self._is_symmetric: tril = np.tril_indices_from(data_ma, -1) tril = order[tril] masked = np.append(masked, tril) # Remove masked value to the iteration list order = np.delete(order, masked) # Get the indexes of nodes (i,j) for each observed interactions order = list(zip(*np.unravel_index(order, data_ma.shape))) if randomize is True: np.random.shuffle(order) return order
def data_iter(self, randomize=True): if not hasattr(self, '_order'): order = np.arange(self.data_ma.size).reshape(self.data_ma.shape) masked = order[self.data_ma.mask] if self._symmetric: tril = np.tril_indices_from(self.data_ma, -1) tril = order[tril] masked = np.append(masked, tril) # Remove masked value to the iteration list order = np.delete(order, masked) # Get the indexes of nodes (i,j) for each observed interactions order = list(zip(*np.unravel_index(order, self.data_ma.shape))) self._order = order else: order = self._order if randomize is True: np.random.shuffle(order) return order # @debug: symmetric matrix ?
def read_triangular(filepath): """Open Pi matrix output from SLICE. All matrix opening functions return first the genomic windows corresponding to the axes of the proximity matrix, then the proximity matrix itself. Since SLICE output matrices do not embed the genomic locations of the windows, the first return value is None. :param str filepath: Path to the SLICE output file :returns: (None, SLICE Pi matrix) """ with open(filepath) as in_data: arr = [[float(i) for i in line.split()] for line in in_data] size = len(arr[-1]) proximity_matrix = np.zeros((size, size)) lower_i = np.tril_indices_from(proximity_matrix) upper_i = np.triu_indices_from(proximity_matrix) proximity_matrix[:] = np.NAN proximity_matrix[lower_i] = list(itertools.chain(*arr)) proximity_matrix[upper_i] = proximity_matrix.T[upper_i] proximity_matrix[proximity_matrix > 1.] = np.NAN return None, proximity_matrix