#387·einops

[功能建议] 在重新排列中提供对具有灵活维度的多个带星号的通配符的原生支持

作者: LeonhardFeiner创建于 2025年10月9日更新于 2025年10月9日
标签feature suggestion

import re import numpy as np from einops import rearrange def rearrange_star(tensor, pattern, **kwargs): """ Extended rearrange function that supports inner complex shapes with the * operator. Example: t = np.random.randn(5,7,12,5,6, 1,13) r = rearrange_star(t, "b r (*x) *y ... -> (...) b *x r (*y)", x=(4,3), y=(5,6)) # r.shape will be (13, 5, 4, 3, 7, 30) Args: tensor: Input tensor to rearrange pattern: Einops pattern with starred variables like (*x), *y, etc. **kwargs: Shape definitions for starred variables (e.g., x=(4,3), y=(5,6)) Returns: Rearranged tensor """ lhs_pattern = pattern.split("->")[0].strip()

Pattern to match starred variables: (*var) or *var

star_pattern = r"$$*(\w+)$$|*(\w+)" matches = re.findall(star_pattern, lhs_pattern) starred_vars = {left_match or right_match for left_match, right_match in matches} grouped_starred_vars = {left_match for left_match, _ in matches if left_match}

Check all starred variables have shape definitions

missing_shapes = starred_vars - set(kwargs.keys()) if missing_shapes: raise ValueError(f"Missing shape definitions for starred variables: {missing_shapes}")

Create a dictionary of shape definitions for starred variables

shape_defs = {var: kwargs[var] for var in starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_defs = {var: kwargs[var] for var in starred_vars - grouped_starred_vars}

Create a dictionary of shape definitions for grouped starred variables

grouped_shape_defs = {var: kwargs[var] for var in grouped_starred_vars}

Create a dictionary of shape definitions for ungrouped starred variables

ungrouped_shape_def

内容来源: arogozhnikov/einops