Python numpy.unravel_index() Examples
The following are 30
code examples of numpy.unravel_index().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
numpy
, or try the search function
.
Example #1
Source File: cliffwalking.py From DRL_DeliveryDuel with MIT License | 6 votes |
def render(self, mode='human'): outfile = sys.stdout for s in range(self.nS): position = np.unravel_index(s, self.shape) if self.s == s: output = " x " # Print terminal state elif position == (3, 11): output = " T " elif self._cliff[position]: output = " C " else: output = " o " if position[1] == 0: output = output.lstrip() if position[1] == self.shape[1] - 1: output = output.rstrip() output += '\n' outfile.write(output) outfile.write('\n')
Example #2
Source File: rputil.py From RelativePose with BSD 3-Clause "New" or "Revised" License | 6 votes |
def Sampling(heatmap, K): # heatmap: [n,h,w] # return: [n,K,2] heatmap = np.exp(-heatmap/2) n,h,w=heatmap.shape pt = np.zeros([n,K,2]) WINDOW_SZ = 15 for i in range(n): for j in range(K): idx=np.argmax(heatmap[i]) coord=np.unravel_index(idx,heatmap[i].shape)[::-1] pt[i,j,:]=coord # suppress the neighbors topl=[max(0,coord[0] - WINDOW_SZ),max(0,coord[1] - WINDOW_SZ)] botr=[min(w-1,coord[0] + WINDOW_SZ),min(h-1,coord[1] + WINDOW_SZ)] heatmap[i][topl[1]:botr[1],topl[0]:botr[0]] = heatmap[i].min() return pt
Example #3
Source File: bounding_box.py From ffn with Apache License 2.0 | 6 votes |
def offset_to_index(self, index, offset): """Calculate the index of another box at offset w.r.t. current index. Args: index: the current flat index from which to calculate the offset index. offset: the xyz offset from current index at which to calculate the new index. Returns: The flat index at offset from current index, or None if the given offset goes beyond the range of sub-boxes. This is usually used to calculate the boxes that neighbor the current box. """ coords = np.unravel_index(index, self.total_sub_boxes_xyz, order='F') offset_coords = np.array(coords) + offset if np.any(offset_coords < 0) or np.any( offset_coords >= self.total_sub_boxes_xyz): return None return np.ravel_multi_index( offset_coords, self.total_sub_boxes_xyz, order='F')
Example #4
Source File: bounding_box.py From ffn with Apache License 2.0 | 6 votes |
def tag_border_locations(self, index): """Checks whether a box touches the border of the BoundingBox. Args: index: flat index identifying the box to check Returns: 2-tuple of bool 3d ndarrays (dim order: x, y, z). True if the box touches the border at the start/end (respectively for the 1st and 2nd element of the tuple) of the bbox along the given dimension. """ coords_xyz = np.array( np.unravel_index(index, self.total_sub_boxes_xyz, order='F')) is_start = coords_xyz == 0 is_end = coords_xyz == self.total_sub_boxes_xyz - 1 return is_start, is_end
Example #5
Source File: bottom_up.py From Dispersion-based-Clustering with MIT License | 6 votes |
def select_merge_data(self, u_feas, label, label_to_images, ratio_n, dists): dists.add_(torch.tril(100000 * torch.ones(len(u_feas), len(u_feas)))) cnt = torch.FloatTensor([len(label_to_images[label[idx]]) for idx in range(len(u_feas))]) dists += ratio_n * (cnt.view(1, len(cnt)) + cnt.view(len(cnt), 1)) for idx in range(len(u_feas)): for j in range(idx + 1, len(u_feas)): if label[idx] == label[j]: dists[idx, j] = 100000 dists = dists.numpy() ind = np.unravel_index(np.argsort(dists, axis=None), dists.shape) idx1 = ind[0] idx2 = ind[1] return idx1, idx2
Example #6
Source File: bottom_up.py From Dispersion-based-Clustering with MIT License | 6 votes |
def select_merge_data_v2(self, u_feas, labels, linkages): linkages+=(np.tril(100000 * np.ones((len(u_feas), len(u_feas))))) # blocking the triangle print('Linkage adding') for idx in range(len(u_feas)): for j in range(idx + 1, len(u_feas)): if labels[idx] == labels[j]: linkages[idx, j] = 100000 # set the distance within the same cluster ind = np.unravel_index(np.argsort(linkages, axis=None), linkages.shape) # with axis=None all numbers are sorted and unravel_index transforms the sorted index into ind for each dimension idx1 = ind[0] # the first cluster index idx2 = ind[1] # the second cluster index print('Linkage add finished') return idx1, idx2 #after
Example #7
Source File: bottom_up.py From Dispersion-based-Clustering with MIT License | 6 votes |
def select_merge_data(self, u_feas, label, label_to_images, ratio_n, dists): dists.add_(torch.tril(100000 * torch.ones(len(u_feas), len(u_feas))))#blocking the triangle cnt = torch.FloatTensor([len(label_to_images[label[idx]]) for idx in range(len(u_feas))]) dists += ratio_n * (cnt.view(1, len(cnt)) + cnt.view(len(cnt), 1)) # dist += |A|+|B| for idx in range(len(u_feas)): for j in range(idx + 1, len(u_feas)): if label[idx] == label[j]: dists[idx, j] = 100000 # set the distance within the same cluster dists = dists.numpy() ind = np.unravel_index(np.argsort(dists, axis=None), dists.shape) # with axis=None all numbers are sorted and unravel_index transforms the sorted index into ind for each dimension idx1 = ind[0] # the first dimension index idx2 = ind[1] # the second dimension index return idx1, idx2
Example #8
Source File: cliff_walking.py From rl_algorithms with MIT License | 6 votes |
def __init__(self): self.shape = (4, 12) nS = np.prod(self.shape) nA = 4 # Cliff Location self._cliff = np.zeros(self.shape, dtype=np.bool) self._cliff[3, 1:-1] = True # Calculate transition probabilities P = {} for s in range(nS): position = np.unravel_index(s, self.shape) P[s] = { a : [] for a in range(nA) } P[s][UP] = self._calculate_transition_prob(position, [-1, 0]) P[s][RIGHT] = self._calculate_transition_prob(position, [0, 1]) P[s][DOWN] = self._calculate_transition_prob(position, [1, 0]) P[s][LEFT] = self._calculate_transition_prob(position, [0, -1]) # We always start in state (3, 0) isd = np.zeros(nS) isd[np.ravel_multi_index((3,0), self.shape)] = 1.0 super(CliffWalkingEnv, self).__init__(nS, nA, P, isd)
Example #9
Source File: lil.py From lambda-packs with MIT License | 6 votes |
def reshape(self, shape, order='C'): if type(order) != str or order != 'C': raise ValueError(("Sparse matrices do not support " "an 'order' parameter.")) if type(shape) != tuple: raise TypeError("a tuple must be passed in for 'shape'") if len(shape) != 2: raise ValueError("a length-2 tuple must be passed in for 'shape'") new = lil_matrix(shape, dtype=self.dtype) j_max = self.shape[1] # Size is ambiguous for sparse matrices, so in order to check 'total # dimension', we need to take the product of their dimensions instead if new.shape[0] * new.shape[1] != self.shape[0] * self.shape[1]: raise ValueError("the product of the dimensions for the new sparse " "matrix must equal that of the original matrix") for i, row in enumerate(self.rows): for col, j in enumerate(row): new_r, new_c = np.unravel_index(i*j_max + j, shape) new[new_r, new_c] = self[i, j] return new
Example #10
Source File: mf.py From pyscf with Apache License 2.0 | 6 votes |
def nonin_osc_strength(self): from scipy.sparse import spmatrix """ Computes the non-interacting oscillator strengths and energies """ x,y,z = map(spmatrix.toarray, self.dipole_coo()) i2d = array((x,y,z)) n = self.mo_occ.shape[-1] p = zeros((len(comega)), dtype=np.complex128) # result to accumulate for s in range(self.nspin): o,e,cc = self.mo_occ[0,s],self.mo_energy[0,s],self.mo_coeff[0,s,:,:,0] oo1,ee1 = np.subtract.outer(o,o).reshape(n*n), np.subtract.outer(e,e).reshape(n*n) idx = unravel_index( np.intersect1d(where(oo1<0.0), where(ee1<eemax)), (n,n)) ivrt,iocc = array(list(set(idx[0]))), array(list(set(idx[1]))) voi2d = einsum('nia,ma->nmi', einsum('iab,nb->nia', i2d, cc[ivrt]), cc[iocc]) t2osc = 2.0/3.0*einsum('voi,voi->vo', voi2d, voi2d) t2w = np.subtract.outer(e[ivrt],e[iocc]) t2o = -np.subtract.outer(o[ivrt],o[iocc]) for iw,w in enumerate(comega): p[iw] += 0.5*(t2osc*((t2o/(w-t2w))-(t2o/(w+t2w)))).sum() return p
Example #11
Source File: track_lib.py From TNT with GNU General Public License v3.0 | 6 votes |
def bbox_associate(overlap_mat, IOU_thresh): idx1 = [] idx2 = [] new_overlap_mat = overlap_mat.copy() while 1: idx = np.unravel_index(np.argmax(new_overlap_mat, axis=None), new_overlap_mat.shape) if new_overlap_mat[idx]<IOU_thresh: break else: idx1.append(idx[0]) idx2.append(idx[1]) new_overlap_mat[idx[0],:] = 0 new_overlap_mat[:,idx[1]] = 0 idx1 = np.array(idx1) idx2 = np.array(idx2) return idx1, idx2
Example #12
Source File: addons.py From pyscf with Apache License 2.0 | 6 votes |
def large_ci(ci, norb, nelec, tol=LARGE_CI_TOL, return_strs=RETURN_STRS): '''Search for the largest CI coefficients ''' neleca, nelecb = _unpack_nelec(nelec) na = cistring.num_strings(norb, neleca) nb = cistring.num_strings(norb, nelecb) assert(ci.shape == (na, nb)) addra, addrb = numpy.where(abs(ci) > tol) if addra.size == 0: # No large CI coefficient > tol, search for the largest coefficient addra, addrb = numpy.unravel_index(numpy.argmax(abs(ci)), ci.shape) addra = numpy.asarray([addra]) addrb = numpy.asarray([addrb]) strsa = cistring.addrs2str(norb, neleca, addra) strsb = cistring.addrs2str(norb, nelecb, addrb) if return_strs: strsa = [bin(x) for x in strsa] strsb = [bin(x) for x in strsb] return list(zip(ci[addra,addrb], strsa, strsb)) else: occslsta = cistring._strs2occslst(strsa, norb) occslstb = cistring._strs2occslst(strsb, norb) return list(zip(ci[addra,addrb], occslsta, occslstb))
Example #13
Source File: windy_gridworld.py From rl_algorithms with MIT License | 6 votes |
def _render(self, mode='human', close=False): if close: return outfile = StringIO() if mode == 'ansi' else sys.stdout for s in range(self.nS): position = np.unravel_index(s, self.shape) # print(self.s) if self.s == s: output = " x " elif position == (3,7): output = " T " else: output = " o " if position[1] == 0: output = output.lstrip() if position[1] == self.shape[1] - 1: output = output.rstrip() output += "\n" outfile.write(output) outfile.write("\n")
Example #14
Source File: tracklet_utils_3d.py From TNT with GNU General Public License v3.0 | 6 votes |
def bbox_associate(overlap_mat, IOU_thresh): idx1 = [] idx2 = [] while 1: idx = np.unravel_index(np.argmax(overlap_mat, axis=None), overlap_mat.shape) if overlap_mat[idx]<IOU_thresh: break else: idx1.append(idx[0]) idx2.append(idx[1]) overlap_mat[idx[0],:] = 0 overlap_mat[:,idx[1]] = 0 idx1 = np.array(idx1) idx2 = np.array(idx2) return idx1, idx2
Example #15
Source File: track_lib.py From TNT with GNU General Public License v3.0 | 6 votes |
def bbox_associate(overlap_mat, IOU_thresh): idx1 = [] idx2 = [] new_overlap_mat = overlap_mat.copy() while 1: idx = np.unravel_index(np.argmax(new_overlap_mat, axis=None), new_overlap_mat.shape) if new_overlap_mat[idx]<IOU_thresh: break else: idx1.append(idx[0]) idx2.append(idx[1]) new_overlap_mat[idx[0],:] = 0 new_overlap_mat[:,idx[1]] = 0 idx1 = np.array(idx1) idx2 = np.array(idx2) return idx1, idx2
Example #16
Source File: test_case.py From graphics with Apache License 2.0 | 5 votes |
def _compute_gradient_error(self, x, y, x_init_value, delta=1e-6): """Computes the gradient error. Args: x: a tensor or list of tensors. y: a tensor. x_init_value: a numpy array of the same shape as "x" representing the initial value of x. delta: (optional) the amount of perturbation. Returns: A tuple (max_error, row, column), with max_error the maxium error between the two Jacobians, and row/column the position of said maximum error. """ x_shape = x.shape.as_list() y_shape = y.shape.as_list() with self.cached_session(): grad = tf.compat.v1.test.compute_gradient(x, x_shape, y, y_shape, x_init_value, delta) if isinstance(grad, tuple): grad = [grad] error = 0 row_max_error = 0 column_max_error = 0 for j_t, j_n in grad: if j_t.size or j_n.size: # Handle zero size tensors correctly diff = np.fabs(j_t - j_n) max_error = np.maximum(error, diff.max()) row_max_error, column_max_error = np.unravel_index( diff.argmax(), diff.shape) return max_error, row_max_error, column_max_error
Example #17
Source File: som.py From pyERA with MIT License | 5 votes |
def return_BMU_index(self, input_vector): """Return the coordinates of the BMU. @param input_vector the vector to use for the comparison. """ output_matrix = np.zeros((self._matrix_size, self._matrix_size)) it = np.nditer(output_matrix, flags=['multi_index']) while not it.finished: #print "%d <%s>" % (it[0], it.multi_index), dist = self.return_euclidean_distance(input_vector, self._weights_matrix[it.multi_index[0], it.multi_index[1], :]) output_matrix[it.multi_index[0], it.multi_index[1]] = dist it.iternext() row, col = np.unravel_index(output_matrix.argmin(), output_matrix.shape) return (row, col)
Example #18
Source File: showrubbishopt.py From systematictradingexamples with GNU General Public License v2.0 | 5 votes |
def find_highest_corr(sigmat): new_sigmat=copy(sigmat.values) np.fill_diagonal(new_sigmat, -100.0) (i,j)=np.unravel_index(new_sigmat.argmax(), new_sigmat.shape) return (i,j)
Example #19
Source File: compareoptmethods.py From systematictradingexamples with GNU General Public License v2.0 | 5 votes |
def find_highest_corr(sigmat): new_sigmat=copy(sigmat.values) np.fill_diagonal(new_sigmat, -100.0) (i,j)=np.unravel_index(new_sigmat.argmax(), new_sigmat.shape) return (i,j)
Example #20
Source File: test_index_tricks.py From vnpy_crypto with MIT License | 5 votes |
def test_0d(self): # gh-580 x = np.unravel_index(0, ()) assert_equal(x, ()) assert_raises_regex(ValueError, "0d array", np.unravel_index, [0], ()) assert_raises_regex( ValueError, "out of bounds", np.unravel_index, [1], ())
Example #21
Source File: som.py From pyERA with MIT License | 5 votes |
def return_BMU_weights(self, input_vector): """Return the weights of the BMU. @param input_vector the vector to use for the comparison. """ output_matrix = np.zeros((self._matrix_size, self._matrix_size)) it = np.nditer(output_matrix, flags=['multi_index']) while not it.finished: #print "%d <%s>" % (it[0], it.multi_index), dist = self.return_euclidean_distance(input_vector, self._weights_matrix[it.multi_index[0], it.multi_index[1], :]) output_matrix[it.multi_index[0], it.multi_index[1]] = dist it.iternext() row, col = np.unravel_index(output_matrix.argmin(), output_matrix.shape) return self._weights_matrix[row, col, :]
Example #22
Source File: ScanNet.py From RelativePose with BSD 3-Clause "New" or "Revised" License | 5 votes |
def PanoIdx(self,index,h,w,representation): if representation == 'skybox': total=h*w single=total//4 hidx = index//single rest=index % single ys,xs=np.unravel_index(rest, [h,h]) xs += hidx*h idx = np.zeros([len(xs),2]) idx[:,0]=xs idx[:,1]=ys return idx
Example #23
Source File: seal.py From mars with Apache License 2.0 | 5 votes |
def seal_chunk(self, session_id, graph_key, chunk_key, keys, shape, record_type, dtype, fill_value): chunk_bytes_size = np.prod(shape) * dtype.itemsize self._mem_quota_ref.request_batch_quota({chunk_key: chunk_bytes_size}) if fill_value is None: ndarr = np.zeros(shape, dtype=dtype) else: ndarr = np.full(shape, fill_value, dtype=dtype) ndarr_ts = np.zeros(shape, dtype=np.dtype('datetime64[ns]')) # consolidate for key in keys: buffer = None try: # todo potential memory quota issue must be dealt with obj = self.storage_client.get_object( session_id, key, [DataStorageDevice.SHARED_MEMORY, DataStorageDevice.DISK], _promise=False) record_view = obj.view(dtype=record_type, type=np.recarray) for record in record_view: idx = np.unravel_index(record.index, shape) if record.ts > ndarr_ts[idx]: ndarr[idx] = record.value finally: del buffer # clean up self.storage_client.delete(session_id, [key]) self.get_meta_client().delete_meta(session_id, key, False) self._mem_quota_ref.release_quotas(keys) self.storage_client.put_objects( session_id, [chunk_key], [ndarr], [DataStorageDevice.SHARED_MEMORY, DataStorageDevice.DISK]) self.get_meta_client().set_chunk_meta(session_id, chunk_key, size=chunk_bytes_size, shape=shape, workers=(self.address,))
Example #24
Source File: util.py From RelativePose with BSD 3-Clause "New" or "Revised" License | 5 votes |
def PanoIdx(index,h,w): total=h*w single=total//4 hidx = index//single rest=index % single ys,xs=np.unravel_index(rest, [h,h]) xs += hidx*h idx = np.zeros([len(xs),2]) idx[:,0]=xs idx[:,1]=ys return idx
Example #25
Source File: digits_adjust.py From OpenCV-Python-Tutorial with MIT License | 5 votes |
def adjust_SVM(self): Cs = np.logspace(0, 10, 15, base=2) gammas = np.logspace(-7, 4, 15, base=2) scores = np.zeros((len(Cs), len(gammas))) scores[:] = np.nan print('adjusting SVM (may take a long time) ...') def f(job): i, j = job samples, labels = self.get_dataset() params = dict(C = Cs[i], gamma=gammas[j]) score = cross_validate(SVM, params, samples, labels) return i, j, score ires = self.run_jobs(f, np.ndindex(*scores.shape)) for count, (i, j, score) in enumerate(ires): scores[i, j] = score print('%d / %d (best error: %.2f %%, last: %.2f %%)' % (count+1, scores.size, np.nanmin(scores)*100, score*100)) print(scores) print('writing score table to "svm_scores.npz"') np.savez('svm_scores.npz', scores=scores, Cs=Cs, gammas=gammas) i, j = np.unravel_index(scores.argmin(), scores.shape) best_params = dict(C = Cs[i], gamma=gammas[j]) print('best params:', best_params) print('best error: %.2f %%' % (scores.min()*100)) return best_params
Example #26
Source File: model.py From justcopy-backend with MIT License | 5 votes |
def decode(score_s, score_e, top_n=1, max_len=None): """Take argmax of constrained score_s * score_e. Args: score_s: independent start predictions score_e: independent end predictions top_n: number of top scored pairs to take max_len: max span length to consider """ pred_s = [] pred_e = [] pred_score = [] max_len = max_len or score_s.size(1) for i in range(score_s.size(0)): # Outer product of scores to get full p_s * p_e matrix scores = torch.ger(score_s[i], score_e[i]) # Zero out negative length and over-length span scores scores.triu_().tril_(max_len - 1) # Take argmax or top n scores = scores.numpy() scores_flat = scores.flatten() if top_n == 1: idx_sort = [np.argmax(scores_flat)] elif len(scores_flat) < top_n: idx_sort = np.argsort(-scores_flat) else: idx = np.argpartition(-scores_flat, top_n)[0:top_n] idx_sort = idx[np.argsort(-scores_flat[idx])] s_idx, e_idx = np.unravel_index(idx_sort, scores.shape) pred_s.append(s_idx) pred_e.append(e_idx) pred_score.append(scores_flat[idx_sort]) return pred_s, pred_e, pred_score
Example #27
Source File: test_index_tricks.py From lambda-packs with MIT License | 5 votes |
def test_writeability(self): # See gh-7269 x, y = np.unravel_index([1, 2, 3], (4, 5)) self.assertTrue(x.flags.writeable) self.assertTrue(y.flags.writeable)
Example #28
Source File: test_index_tricks.py From lambda-packs with MIT License | 5 votes |
def test_basic(self): assert_equal(np.unravel_index(2, (2, 2)), (1, 0)) assert_equal(np.ravel_multi_index((1, 0), (2, 2)), 2) assert_equal(np.unravel_index(254, (17, 94)), (2, 66)) assert_equal(np.ravel_multi_index((2, 66), (17, 94)), 254) assert_raises(ValueError, np.unravel_index, -1, (2, 2)) assert_raises(TypeError, np.unravel_index, 0.5, (2, 2)) assert_raises(ValueError, np.unravel_index, 4, (2, 2)) assert_raises(ValueError, np.ravel_multi_index, (-3, 1), (2, 2)) assert_raises(ValueError, np.ravel_multi_index, (2, 1), (2, 2)) assert_raises(ValueError, np.ravel_multi_index, (0, -3), (2, 2)) assert_raises(ValueError, np.ravel_multi_index, (0, 2), (2, 2)) assert_raises(TypeError, np.ravel_multi_index, (0.1, 0.), (2, 2)) assert_equal(np.unravel_index((2*3 + 1)*6 + 4, (4, 3, 6)), [2, 1, 4]) assert_equal( np.ravel_multi_index([2, 1, 4], (4, 3, 6)), (2*3 + 1)*6 + 4) arr = np.array([[3, 6, 6], [4, 5, 1]]) assert_equal(np.ravel_multi_index(arr, (7, 6)), [22, 41, 37]) assert_equal( np.ravel_multi_index(arr, (7, 6), order='F'), [31, 41, 13]) assert_equal( np.ravel_multi_index(arr, (4, 6), mode='clip'), [22, 23, 19]) assert_equal(np.ravel_multi_index(arr, (4, 4), mode=('clip', 'wrap')), [12, 13, 13]) assert_equal(np.ravel_multi_index((3, 1, 4, 1), (6, 7, 8, 9)), 1621) assert_equal(np.unravel_index(np.array([22, 41, 37]), (7, 6)), [[3, 6, 6], [4, 5, 1]]) assert_equal( np.unravel_index(np.array([31, 41, 13]), (7, 6), order='F'), [[3, 6, 6], [4, 5, 1]]) assert_equal(np.unravel_index(1621, (6, 7, 8, 9)), [3, 1, 4, 1])
Example #29
Source File: knn_matting.py From knn-matting with MIT License | 5 votes |
def knn_matte(img, trimap, mylambda=100): [m, n, c] = img.shape img, trimap = img/255.0, trimap/255.0 foreground = (trimap > 0.99).astype(int) background = (trimap < 0.01).astype(int) all_constraints = foreground + background print('Finding nearest neighbors') a, b = np.unravel_index(np.arange(m*n), (m, n)) feature_vec = np.append(np.transpose(img.reshape(m*n,c)), [ a, b]/np.sqrt(m*m + n*n), axis=0).T nbrs = sklearn.neighbors.NearestNeighbors(n_neighbors=10, n_jobs=4).fit(feature_vec) knns = nbrs.kneighbors(feature_vec)[1] # Compute Sparse A print('Computing sparse A') row_inds = np.repeat(np.arange(m*n), 10) col_inds = knns.reshape(m*n*10) vals = 1 - np.linalg.norm(feature_vec[row_inds] - feature_vec[col_inds], axis=1)/(c+2) A = scipy.sparse.coo_matrix((vals, (row_inds, col_inds)),shape=(m*n, m*n)) D_script = scipy.sparse.diags(np.ravel(A.sum(axis=1))) L = D_script-A D = scipy.sparse.diags(np.ravel(all_constraints[:,:, 0])) v = np.ravel(foreground[:,:,0]) c = 2*mylambda*np.transpose(v) H = 2*(L + mylambda*D) print('Solving linear system for alpha') warnings.filterwarnings('error') alpha = [] try: alpha = np.minimum(np.maximum(scipy.sparse.linalg.spsolve(H, c), 0), 1).reshape(m, n) except Warning: x = scipy.sparse.linalg.lsqr(H, c) alpha = np.minimum(np.maximum(x[0], 0), 1).reshape(m, n) return alpha
Example #30
Source File: _hungarian.py From lambda-packs with MIT License | 5 votes |
def _step4(state): """ Find a noncovered zero and prime it. If there is no starred zero in the row containing this primed zero, Go to Step 5. Otherwise, cover this row and uncover the column containing the starred zero. Continue in this manner until there are no uncovered zeros left. Save the smallest uncovered value and Go to Step 6. """ # We convert to int as numpy operations are faster on int C = (state.C == 0).astype(int) covered_C = C * state.row_uncovered[:, np.newaxis] covered_C *= np.asarray(state.col_uncovered, dtype=int) n = state.C.shape[0] m = state.C.shape[1] while True: # Find an uncovered zero row, col = np.unravel_index(np.argmax(covered_C), (n, m)) if covered_C[row, col] == 0: return _step6 else: state.marked[row, col] = 2 # Find the first starred element in the row star_col = np.argmax(state.marked[row] == 1) if state.marked[row, star_col] != 1: # Could not find one state.Z0_r = row state.Z0_c = col return _step5 else: col = star_col state.row_uncovered[row] = False state.col_uncovered[col] = True covered_C[:, col] = C[:, col] * ( np.asarray(state.row_uncovered, dtype=int)) covered_C[row] = 0