For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).
Mojo function
from_numpy
def from_numpy[mut: Bool, //, dtype: DType, rank: Int, origin: Origin[mut=mut]](ref[origin] array: PythonObject) -> TileTensor[dtype, Layout[TypeList[#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)](), TypeList[#kgen.param_list.reduce(#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)]), base=, reducer=[PrevV: KGENParamList[CoordLike], VA: KGENParamList[CoordLike], idx: __mlir_type.index] #kgen.param_list.concat(ComptimeInt[Int(1)] if identical(idx, 0) else Scalar[#kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].DTYPE if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) else PrevV[0].DTYPE] if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) if (xor #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].is_static_value, True) else (xor PrevV[0].is_static_value, True) else ComptimeInt[Int((mul PrevV[0].static_value, #kgen.param_list.tabulate(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), [idx: __mlir_type.index] #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[(add (mul idx, -1), len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0]._ParamListType if #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)[0].is_tuple if identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else identical(len(#kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), 1) else #kgen.param_list.tabulate(rank, [idx: __mlir_type.index] Int)), -1)])[(add idx, -1)].static_value))], PrevV))]()], origin]
Borrows an N-D C-contiguous NumPy array as a TileTensor.
The tensor aliases the NumPy array's buffer; no bytes are copied. Its
origin is tied to array, so the compiler keeps array alive for as long
as the tensor is used.
This calls into CPython, so it is a host-side entry point.
Example:
from layout import from_numpy
from std.python import Python
var np = Python.import_module("numpy")
var array = np.arange(6, dtype="float64").reshape(2, 3)
var tensor = from_numpy[.float64, 2](array)
var value = tensor[1, 2]Parameters:
- mut (
Bool): The mutability of the borrow, inferred fromarray. - dtype (
DType): The expected element dtype of the array. - rank (
Int): The expected number of dimensions. - origin (
Origin[mut=mut]): The origin of the borrow, inferred fromarray.
Args:
- array (
PythonObject): A C-contiguous NumPyndarrayofrankdimensions whose dtype matchesdtype.
Returns:
Raises:
If array.ndim is not rank, is not C-contiguous, has a dtype that
does not match dtype, or is not writable when borrowed mutably.