Python numpy.ravel_multi_index() Examples
The following are 30
code examples of numpy.ravel_multi_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: test_index_tricks.py From vnpy_crypto with MIT License | 6 votes |
def test_big_indices(self): # ravel_multi_index for big indices (issue #7546) if np.intp == np.int64: arr = ([1, 29], [3, 5], [3, 117], [19, 2], [2379, 1284], [2, 2], [0, 1]) assert_equal( np.ravel_multi_index(arr, (41, 7, 120, 36, 2706, 8, 6)), [5627771580, 117259570957]) # test overflow checking for too big array (issue #7546) dummy_arr = ([0],[0]) half_max = np.iinfo(np.intp).max // 2 assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2)), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2)) assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2), order='F'), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2), order='F')
Example #2
Source File: basis.py From pyGSTi with Apache License 2.0 | 6 votes |
def _sparse_equal(A, B, atol=1e-8): """ NOTE: same as matrixtools.sparse_equal - but can't import that here """ if _np.array_equal(A.shape, B.shape) == 0: return False r1, c1 = A.nonzero() r2, c2 = B.nonzero() lidx1 = _np.ravel_multi_index((r1, c1), A.shape) lidx2 = _np.ravel_multi_index((r2, c2), B.shape) sidx1 = lidx1.argsort() sidx2 = lidx2.argsort() index_match = _np.array_equal(lidx1[sidx1], lidx2[sidx2]) if index_match == 0: return False else: v1 = A.data v2 = B.data V1 = v1[sidx1] V2 = v2[sidx2] return _np.allclose(V1, V2, atol=atol)
Example #3
Source File: nav_env.py From DOTA_models with Apache License 2.0 | 6 votes |
def valid_fn_vec(self, pqr): """Returns if the given set of nodes is valid or not.""" xyt = self.to_actual_xyt_vec(np.array(pqr)) height = self.traversible.shape[0] width = self.traversible.shape[1] x = np.round(xyt[:,[0]]).astype(np.int32) y = np.round(xyt[:,[1]]).astype(np.int32) is_inside = np.all(np.concatenate((x >= 0, y >= 0, x < width, y < height), axis=1), axis=1) x = np.minimum(np.maximum(x, 0), width-1) y = np.minimum(np.maximum(y, 0), height-1) ind = np.ravel_multi_index((y,x), self.traversible.shape) is_traversible = self.traversible.ravel()[ind] is_valid = np.all(np.concatenate((is_inside[:,np.newaxis], is_traversible), axis=1), axis=1) return is_valid
Example #4
Source File: nav_env.py From DOTA_models with Apache License 2.0 | 6 votes |
def raw_valid_fn_vec(self, xyt): """Returns if the given set of nodes is valid or not.""" height = self.traversible.shape[0] width = self.traversible.shape[1] x = np.round(xyt[:,[0]]).astype(np.int32) y = np.round(xyt[:,[1]]).astype(np.int32) is_inside = np.all(np.concatenate((x >= 0, y >= 0, x < width, y < height), axis=1), axis=1) x = np.minimum(np.maximum(x, 0), width-1) y = np.minimum(np.maximum(y, 0), height-1) ind = np.ravel_multi_index((y,x), self.traversible.shape) is_traversible = self.traversible.ravel()[ind] is_valid = np.all(np.concatenate((is_inside[:,np.newaxis], is_traversible), axis=1), axis=1) return is_valid
Example #5
Source File: mppovm.py From mpnum with BSD 3-Clause "New" or "Revised" License | 6 votes |
def pack_samples(self, samples, dtype=None): """Pack samples into one integer per sample Store one sample in a single integer instead of a list of integers with length `len(self.nsoutdims)`. Example: >>> p = pauli_mpp(nr_sites=2, local_dim=2) >>> p.outdims (6, 6) >>> p.pack_samples(np.array([[0, 1], [1, 0], [1, 2], [5, 5]])) array([ 1, 6, 8, 35]) """ assert samples.ndim == 2 assert samples.shape[1] == len(self.nsoutdims) samples = np.ravel_multi_index(samples.T, self.nsoutdims) if dtype not in (True, False, None) and issubclass(dtype, np.integer): info = np.iinfo(dtype) assert samples.min() >= info.min assert samples.max() <= info.max samples = samples.astype(dtype) return samples
Example #6
Source File: test_index_tricks.py From GraphicDesignPatternByPython with MIT License | 6 votes |
def test_big_indices(self): # ravel_multi_index for big indices (issue #7546) if np.intp == np.int64: arr = ([1, 29], [3, 5], [3, 117], [19, 2], [2379, 1284], [2, 2], [0, 1]) assert_equal( np.ravel_multi_index(arr, (41, 7, 120, 36, 2706, 8, 6)), [5627771580, 117259570957]) # test overflow checking for too big array (issue #7546) dummy_arr = ([0],[0]) half_max = np.iinfo(np.intp).max // 2 assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2)), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2)) assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2), order='F'), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2), order='F')
Example #7
Source File: test_index_tricks.py From recruit with Apache License 2.0 | 6 votes |
def test_big_indices(self): # ravel_multi_index for big indices (issue #7546) if np.intp == np.int64: arr = ([1, 29], [3, 5], [3, 117], [19, 2], [2379, 1284], [2, 2], [0, 1]) assert_equal( np.ravel_multi_index(arr, (41, 7, 120, 36, 2706, 8, 6)), [5627771580, 117259570957]) # test overflow checking for too big array (issue #7546) dummy_arr = ([0],[0]) half_max = np.iinfo(np.intp).max // 2 assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2)), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2)) assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2), order='F'), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2), order='F')
Example #8
Source File: nav_env.py From yolo_v2 with Apache License 2.0 | 6 votes |
def valid_fn_vec(self, pqr): """Returns if the given set of nodes is valid or not.""" xyt = self.to_actual_xyt_vec(np.array(pqr)) height = self.traversible.shape[0] width = self.traversible.shape[1] x = np.round(xyt[:,[0]]).astype(np.int32) y = np.round(xyt[:,[1]]).astype(np.int32) is_inside = np.all(np.concatenate((x >= 0, y >= 0, x < width, y < height), axis=1), axis=1) x = np.minimum(np.maximum(x, 0), width-1) y = np.minimum(np.maximum(y, 0), height-1) ind = np.ravel_multi_index((y,x), self.traversible.shape) is_traversible = self.traversible.ravel()[ind] is_valid = np.all(np.concatenate((is_inside[:,np.newaxis], is_traversible), axis=1), axis=1) return is_valid
Example #9
Source File: nav_env.py From yolo_v2 with Apache License 2.0 | 6 votes |
def raw_valid_fn_vec(self, xyt): """Returns if the given set of nodes is valid or not.""" height = self.traversible.shape[0] width = self.traversible.shape[1] x = np.round(xyt[:,[0]]).astype(np.int32) y = np.round(xyt[:,[1]]).astype(np.int32) is_inside = np.all(np.concatenate((x >= 0, y >= 0, x < width, y < height), axis=1), axis=1) x = np.minimum(np.maximum(x, 0), width-1) y = np.minimum(np.maximum(y, 0), height-1) ind = np.ravel_multi_index((y,x), self.traversible.shape) is_traversible = self.traversible.ravel()[ind] is_valid = np.all(np.concatenate((is_inside[:,np.newaxis], is_traversible), axis=1), axis=1) return is_valid
Example #10
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 #11
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 #12
Source File: grid_world.py From reinforcement-learning-an-introduction with MIT License | 6 votes |
def figure_3_2_linear_system(): ''' Here we solve the linear system of equations to find the exact solution. We do this by filling the coefficients for each of the states with their respective right side constant. ''' A = -1 * np.eye(WORLD_SIZE * WORLD_SIZE) b = np.zeros(WORLD_SIZE * WORLD_SIZE) for i in range(WORLD_SIZE): for j in range(WORLD_SIZE): s = [i, j] # current state index_s = np.ravel_multi_index(s, (WORLD_SIZE, WORLD_SIZE)) for a in ACTIONS: s_, r = step(s, a) index_s_ = np.ravel_multi_index(s_, (WORLD_SIZE, WORLD_SIZE)) A[index_s, index_s_] += ACTION_PROB * DISCOUNT b[index_s] -= ACTION_PROB * r x = np.linalg.solve(A, b) draw_image(np.round(x.reshape(WORLD_SIZE, WORLD_SIZE), decimals=2)) plt.savefig('../images/figure_3_2_linear_system.png') plt.close()
Example #13
Source File: test_index_tricks.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_big_indices(self): # ravel_multi_index for big indices (issue #7546) if np.intp == np.int64: arr = ([1, 29], [3, 5], [3, 117], [19, 2], [2379, 1284], [2, 2], [0, 1]) assert_equal( np.ravel_multi_index(arr, (41, 7, 120, 36, 2706, 8, 6)), [5627771580, 117259570957]) # test overflow checking for too big array (issue #7546) dummy_arr = ([0],[0]) half_max = np.iinfo(np.intp).max // 2 assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2)), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2)) assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2), order='F'), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2), order='F')
Example #14
Source File: test_index_tricks.py From lambda-packs with MIT License | 6 votes |
def test_big_indices(self): # ravel_multi_index for big indices (issue #7546) if np.intp == np.int64: arr = ([1, 29], [3, 5], [3, 117], [19, 2], [2379, 1284], [2, 2], [0, 1]) assert_equal( np.ravel_multi_index(arr, (41, 7, 120, 36, 2706, 8, 6)), [5627771580, 117259570957]) # test overflow checking for too big array (issue #7546) dummy_arr = ([0],[0]) half_max = np.iinfo(np.intp).max // 2 assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2)), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2)) assert_equal( np.ravel_multi_index(dummy_arr, (half_max, 2), order='F'), [0]) assert_raises(ValueError, np.ravel_multi_index, dummy_arr, (half_max+1, 2), order='F')
Example #15
Source File: test_index_tricks.py From Computable with MIT License | 6 votes |
def test_dtypes(self): # Test with different data types for dtype in [np.int16, np.uint16, np.int32, np.uint32, np.int64, np.uint64]: coords = np.array([[1, 0, 1, 2, 3, 4], [1, 6, 1, 3, 2, 0]], dtype=dtype) shape = (5, 8) uncoords = 8*coords[0]+coords[1] assert_equal(np.ravel_multi_index(coords, shape), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape)) uncoords = coords[0]+5*coords[1] assert_equal(np.ravel_multi_index(coords, shape, order='F'), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape, order='F')) coords = np.array([[1, 0, 1, 2, 3, 4], [1, 6, 1, 3, 2, 0], [1, 3, 1, 0, 9, 5]], dtype=dtype) shape = (5, 8, 10) uncoords = 10*(8*coords[0]+coords[1])+coords[2] assert_equal(np.ravel_multi_index(coords, shape), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape)) uncoords = coords[0]+5*(coords[1]+8*coords[2]) assert_equal(np.ravel_multi_index(coords, shape, order='F'), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape, order='F'))
Example #16
Source File: cliffwalking.py From DRL_DeliveryDuel with MIT License | 6 votes |
def _calculate_transition_prob(self, current, delta): """ Determine the outcome for an action. Transition Prob is always 1.0. :param current: Current position on the grid as (row, col) :param delta: Change in position for transition :return: (1.0, new_state, reward, done) """ new_position = np.array(current) + np.array(delta) new_position = self._limit_coordinates(new_position).astype(int) new_state = np.ravel_multi_index(tuple(new_position), self.shape) if self._cliff[tuple(new_position)]: return [(1.0, self.start_state_index, -100, False)] terminal_state = (self.shape[0] - 1, self.shape[1] - 1) is_done = tuple(new_position) == terminal_state return [(1.0, new_state, -1, is_done)]
Example #17
Source File: solve_foreground_background.py From closed-form-matting with MIT License | 6 votes |
def get_grad_operator(mask): """Returns sparse matrix computing horizontal, vertical, and two diagonal gradients.""" horizontal_left = np.ravel_multi_index(np.nonzero(mask[:, :-1] | mask[:, 1:]), mask.shape) horizontal_right = horizontal_left + 1 vertical_top = np.ravel_multi_index(np.nonzero(mask[:-1, :] | mask[1:, :]), mask.shape) vertical_bottom = vertical_top + mask.shape[1] diag_main_1 = np.ravel_multi_index(np.nonzero(mask[:-1, :-1] | mask[1:, 1:]), mask.shape) diag_main_2 = diag_main_1 + mask.shape[1] + 1 diag_sub_1 = np.ravel_multi_index(np.nonzero(mask[:-1, 1:] | mask[1:, :-1]), mask.shape) + 1 diag_sub_2 = diag_sub_1 + mask.shape[1] - 1 indices = np.stack(( np.concatenate((horizontal_left, vertical_top, diag_main_1, diag_sub_1)), np.concatenate((horizontal_right, vertical_bottom, diag_main_2, diag_sub_2)) ), axis=-1) return scipy.sparse.coo_matrix( (np.tile([-1, 1], len(indices)), (np.arange(indices.size) // 2, indices.flatten())), shape=(len(indices), mask.size))
Example #18
Source File: graph_utils.py From yolo_v2 with Apache License 2.0 | 5 votes |
def label_nodes_with_class(nodes_xyt, class_maps, pix): """ Returns: class_maps__: one-hot class_map for each class. node_class_label: one-hot class_map for each class, nodes_xyt.shape[0] x n_classes """ # Assign each pixel to a node. selem = skimage.morphology.disk(pix) class_maps_ = class_maps*1. for i in range(class_maps.shape[2]): class_maps_[:,:,i] = skimage.morphology.dilation(class_maps[:,:,i]*1, selem) class_maps__ = np.argmax(class_maps_, axis=2) class_maps__[np.max(class_maps_, axis=2) == 0] = -1 # For each node pick out the label from this class map. x = np.round(nodes_xyt[:,[0]]).astype(np.int32) y = np.round(nodes_xyt[:,[1]]).astype(np.int32) ind = np.ravel_multi_index((y,x), class_maps__.shape) node_class_label = class_maps__.ravel()[ind][:,0] # Convert to one hot versions. class_maps_one_hot = np.zeros(class_maps.shape, dtype=np.bool) node_class_label_one_hot = np.zeros((node_class_label.shape[0], class_maps.shape[2]), dtype=np.bool) for i in range(class_maps.shape[2]): class_maps_one_hot[:,:,i] = class_maps__ == i node_class_label_one_hot[:,i] = node_class_label == i return class_maps_one_hot, node_class_label_one_hot
Example #19
Source File: graph_utils.py From yolo_v2 with Apache License 2.0 | 5 votes |
def convert_traversible_to_graph(traversible, ff_cost=1., fo_cost=1., oo_cost=1., connectivity=4): assert(connectivity == 4 or connectivity == 8) sz_x = traversible.shape[1] sz_y = traversible.shape[0] g, nodes = generate_lattice(sz_x, sz_y) # Assign costs. edge_wts = g.new_edge_property('float') g.edge_properties['wts'] = edge_wts wts = np.ones(g.num_edges(), dtype=np.float32) edge_wts.get_array()[:] = wts if connectivity == 8: add_diagonal_edges(g, nodes, sz_x, sz_y, np.sqrt(2.)) se = np.array([[int(e.source()), int(e.target())] for e in g.edges()]) s_xy = nodes[se[:,0]] t_xy = nodes[se[:,1]] s_t = np.ravel_multi_index((s_xy[:,1], s_xy[:,0]), traversible.shape) t_t = np.ravel_multi_index((t_xy[:,1], t_xy[:,0]), traversible.shape) s_t = traversible.ravel()[s_t] t_t = traversible.ravel()[t_t] wts = np.zeros(g.num_edges(), dtype=np.float32) wts[np.logical_and(s_t == True, t_t == True)] = ff_cost wts[np.logical_and(s_t == False, t_t == False)] = oo_cost wts[np.logical_xor(s_t, t_t)] = fo_cost edge_wts = g.edge_properties['wts'] for i, e in enumerate(g.edges()): edge_wts[e] = edge_wts[e] * wts[i] # d = edge_wts.get_array()*1. # edge_wts.get_array()[:] = d*wts return g, nodes
Example #20
Source File: test_index_tricks.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_clipmodes(self): # Test clipmodes assert_equal( np.ravel_multi_index([5, 1, -1, 2], (4, 3, 7, 12), mode='wrap'), np.ravel_multi_index([1, 1, 6, 2], (4, 3, 7, 12))) assert_equal(np.ravel_multi_index([5, 1, -1, 2], (4, 3, 7, 12), mode=( 'wrap', 'raise', 'clip', 'raise')), np.ravel_multi_index([1, 1, 0, 2], (4, 3, 7, 12))) assert_raises( ValueError, np.ravel_multi_index, [5, 1, -1, 2], (4, 3, 7, 12))
Example #21
Source File: test_index_tricks.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_dtypes(self): # Test with different data types for dtype in [np.int16, np.uint16, np.int32, np.uint32, np.int64, np.uint64]: coords = np.array( [[1, 0, 1, 2, 3, 4], [1, 6, 1, 3, 2, 0]], dtype=dtype) shape = (5, 8) uncoords = 8*coords[0]+coords[1] assert_equal(np.ravel_multi_index(coords, shape), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape)) uncoords = coords[0]+5*coords[1] assert_equal( np.ravel_multi_index(coords, shape, order='F'), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape, order='F')) coords = np.array( [[1, 0, 1, 2, 3, 4], [1, 6, 1, 3, 2, 0], [1, 3, 1, 0, 9, 5]], dtype=dtype) shape = (5, 8, 10) uncoords = 10*(8*coords[0]+coords[1])+coords[2] assert_equal(np.ravel_multi_index(coords, shape), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape)) uncoords = coords[0]+5*(coords[1]+8*coords[2]) assert_equal( np.ravel_multi_index(coords, shape, order='F'), uncoords) assert_equal(coords, np.unravel_index(uncoords, shape, order='F'))
Example #22
Source File: ndutils.py From voxelmorph with GNU General Public License v3.0 | 5 votes |
def sub2ind(arr, size, **kwargs): """ similar to MATLAB's sub2ind Note default order is C-style, not F-style (Fortran/MATLAB) """ return np.ravel_multi_index(arr, size, **kwargs)
Example #23
Source File: pyastar.py From a-star with MIT License | 5 votes |
def astar_path(weights, start, goal, allow_diagonal=False): # For the heuristic to be valid, each move must cost at least 1. if weights.min(axis=None) < 1.: raise ValueError('Minimum cost to move must be 1, but got %f' % ( weights.min(axis=None))) # Ensure start is within bounds. if (start[0] < 0 or start[0] >= weights.shape[0] or start[1] < 0 or start[1] >= weights.shape[1]): raise ValueError('Start of (%d, %d) lies outside grid.' % (start)) # Ensure goal is within bounds. if (goal[0] < 0 or goal[0] >= weights.shape[0] or goal[1] < 0 or goal[1] >= weights.shape[1]): raise ValueError('Goal of (%d, %d) lies outside grid.' % (goal)) height, width = weights.shape start_idx = np.ravel_multi_index(start, (height, width)) goal_idx = np.ravel_multi_index(goal, (height, width)) # The C++ code writes the solution to the paths array paths = np.full(height * width, -1, dtype=np.int32) success = astar( weights.flatten(), height, width, start_idx, goal_idx, allow_diagonal, paths # output parameter ) if not success: return np.array([]) coordinates = [] path_idx = goal_idx while path_idx != start_idx: pi, pj = np.unravel_index(path_idx, (height, width)) coordinates.append((pi, pj)) path_idx = paths[path_idx] if coordinates: coordinates.append(np.unravel_index(start_idx, (height, width))) return np.vstack(coordinates[::-1]) else: return np.array([])
Example #24
Source File: test_index_tricks.py From Computable with MIT License | 5 votes |
def test_clipmodes(self): # Test clipmodes assert_equal(np.ravel_multi_index([5, 1, -1, 2], (4, 3, 7, 12), mode='wrap'), np.ravel_multi_index([1, 1, 6, 2], (4, 3, 7, 12))) assert_equal(np.ravel_multi_index([5, 1, -1, 2], (4, 3, 7, 12), mode=('wrap', 'raise', 'clip', 'raise')), np.ravel_multi_index([1, 1, 0, 2], (4, 3, 7, 12))) assert_raises(ValueError, np.ravel_multi_index, [5, 1, -1, 2], (4, 3, 7, 12))
Example #25
Source File: test_index_tricks.py From Computable 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 #26
Source File: cliffwalking.py From DRL_DeliveryDuel with MIT License | 5 votes |
def __init__(self): self.shape = (4, 12) self.start_state_index = np.ravel_multi_index((3, 0), self.shape) 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 and rewards 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]) # Calculate initial state distribution # We always start in state (3, 0) isd = np.zeros(nS) isd[self.start_state_index] = 1.0 super(CliffWalkingEnv, self).__init__(nS, nA, P, isd)
Example #27
Source File: states.py From strawberryfields with Apache License 2.0 | 5 votes |
def fock_prob(self, n, **kwargs): r""" Compute the probabilities of a specific Fock-basis matrix element for the state. May be numerical or symbolic. Args: n (Sequence[int]): the Fock state :math:`\ket{\vec{n}}` that we want to measure the probability of Returns: float/Tensor: the numerical values, or an unevaluated Tensor object, for the Fock-state probabilities. """ if len(n) != self.num_modes: raise ValueError("List length should be equal to number of modes") elif max(n) >= self.cutoff_dim: raise ValueError("Can't get distribution beyond truncation level") state = self.data if not self.batched: state = tf.expand_dims(state, 0) # add fake batch dimension # put batch dimension at end to match behaviour of tf.gather_nd if self.is_pure: flat_idx = np.ravel_multi_index(n, [self.cutoff_dim] * self.num_modes) flat_state = tf.reshape(state, [-1, self.cutoff_dim ** self.num_modes]) prob = tf.abs(flat_state[:, flat_idx]) ** 2 else: doubled_n = [n[i // 2] for i in range(len(n) * 2)] flat_idx = np.ravel_multi_index(doubled_n, [self.cutoff_dim] * (2 * self.num_modes)) flat_state = tf.reshape(state, [-1, self.cutoff_dim ** (2 * self.num_modes)]) prob = flat_state[:, flat_idx] if not self.batched: prob = tf.squeeze(prob, 0) # drop fake batch dimension prob = tf.math.real(prob) prob = tf.identity(prob, name="fock_prob") return prob
Example #28
Source File: test_index_tricks.py From vnpy_crypto with MIT License | 5 votes |
def test_clipmodes(self): # Test clipmodes assert_equal( np.ravel_multi_index([5, 1, -1, 2], (4, 3, 7, 12), mode='wrap'), np.ravel_multi_index([1, 1, 6, 2], (4, 3, 7, 12))) assert_equal(np.ravel_multi_index([5, 1, -1, 2], (4, 3, 7, 12), mode=( 'wrap', 'raise', 'clip', 'raise')), np.ravel_multi_index([1, 1, 0, 2], (4, 3, 7, 12))) assert_raises( ValueError, np.ravel_multi_index, [5, 1, -1, 2], (4, 3, 7, 12))
Example #29
Source File: gridspec.py From python3_ios with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __getitem__(self, key): """Create and return a SuplotSpec instance. """ nrows, ncols = self.get_geometry() def _normalize(key, size): # Includes last index. if isinstance(key, slice): start, stop, _ = key.indices(size) if stop > start: return start, stop - 1 else: if key < 0: key += size if 0 <= key < size: return key, key raise IndexError("invalid index") if isinstance(key, tuple): try: k1, k2 = key except ValueError: raise ValueError("unrecognized subplot spec") num1, num2 = np.ravel_multi_index( [_normalize(k1, nrows), _normalize(k2, ncols)], (nrows, ncols)) else: # Single key num1, num2 = _normalize(key, nrows * ncols) return SubplotSpec(self, num1, num2)
Example #30
Source File: gridspec.py From GraphicDesignPatternByPython with MIT License | 5 votes |
def __getitem__(self, key): """Create and return a SuplotSpec instance. """ nrows, ncols = self.get_geometry() def _normalize(key, size): # Includes last index. if isinstance(key, slice): start, stop, _ = key.indices(size) if stop > start: return start, stop - 1 else: if key < 0: key += size if 0 <= key < size: return key, key raise IndexError("invalid index") if isinstance(key, tuple): try: k1, k2 = key except ValueError: raise ValueError("unrecognized subplot spec") num1, num2 = np.ravel_multi_index( [_normalize(k1, nrows), _normalize(k2, ncols)], (nrows, ncols)) else: # Single key num1, num2 = _normalize(key, nrows * ncols) return SubplotSpec(self, num1, num2)