@frozen
public struct ShapedArraySlice<Scalar> : _ShapedArrayProtocol
extension ShapedArraySlice: RandomAccessCollection, MutableCollection
extension ShapedArraySlice: CustomStringConvertible
extension ShapedArraySlice: CustomPlaygroundDisplayConvertible
extension ShapedArraySlice: CustomReflectable
extension ShapedArraySlice: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
extension ShapedArraySlice: Equatable where Scalar: Equatable
extension ShapedArraySlice: Hashable where Scalar: Hashable
extension ShapedArraySlice: Codable where Scalar: Codable
Непрерывный фрагмент экземпляра ShapedArray
или ShapedArraySlice
.
ShapedArraySlice
обеспечивает быстрые и эффективные операции с смежными фрагментами экземпляров ShapedArray
. Экземпляры ShapedArraySlice
не имеют собственного хранилища. Вместо этого они предоставляют представление о хранилище своего базового ShapedArray
. ShapedArraySlice
может представлять два разных типа срезов: массивы элементов и подмассивы.
Массивы элементов — это подразмерные элементы ShapedArray
: их ранг на единицу меньше, чем у их базы. Срезы массива элементов получаются путем индексации экземпляра ShapedArray
с помощью единственного индекса Int32
.
Например:
var matrix = ShapedArray(shape: [2, 2], scalars: [0, 1, 2, 3])
// `matrix` represents [[0, 1], [2, 3]].
let element = matrix[0]
// `element` is a `ShapedArraySlice` with shape [2]. It is an element
// array, specifically the first element in `matrix`: [0, 1].
matrix[1] = ShapedArraySlice(shape: [2], scalars: [4, 8])
// The second element in `matrix` has been mutated.
// `matrix` now represents [[0, 1, 4, 8]].
Подмассивы — это непрерывный диапазон элементов в ShapedArray
. Ранг подмассива такой же, как и у его основания, но его ведущим измерением является количество диапазона срезов. Срезы подмассива получаются путем индексации ShapedArray
с помощью Range<Int32>
, который представляет диапазон элементов (в ведущем измерении). Такие методы, как prefix(:)
и suffix(:)
, которые внутренне индексируют диапазон, также создают подмассив.
Например:
let zeros = ShapedArray(repeating: 0, shape: [3, 2])
var matrix = ShapedArray(shape: [3, 2], scalars: Array(0..<6))
// `zeros` represents [[0, 0], [0, 0], [0, 0]].
// `matrix` represents [[0, 1], [2, 3], [4, 5]].
let subarray = matrix.prefix(2)
// `subarray` is a `ShapedArraySlice` with shape [2, 2]. It is a slice
// of the first 2 elements in `matrix` and represents [[0, 1], [2, 3]].
matrix[0..<2] = zeros.prefix(2)
// The first 2 elements in `matrix` have been mutated.
// `matrix` now represents [[0, 0], [0, 0], [4, 5]].
Число измерений массива.
Декларация
public var rank: Int { get }
Форма массива.
Декларация
public var shape: [Int] { get }
Общее количество скаляров в массиве.
Декларация
public var scalarCount: Int { get }
Создает
ShapedArraySlice
с указанной формой и смежными скалярами в порядке следования строк.Предварительное условие
Количество скаляров должно равняться произведению размеров фигуры.Декларация
public init(shape: [Int], scalars: [Scalar])
Создает
ShapedArraySlice
с указанной формой и последовательностью скаляров в порядке строк.Предварительное условие
Количество скаляров должно равняться произведению размеров фигуры.Декларация
public init<S>(shape: [Int], scalars: S) where Scalar == S.Element, S : Sequence
Создает
ShapedArraySlice
на основе скалярного значения.Декларация
public init(_ scalar: Scalar)
Создает
ShapedArraySlice
указанной формы и одного повторяющегося скалярного значения.Декларация
@available(*, deprecated, renamed: "init(repeating:shape:﹚") public init(shape: [Int], repeating repeatedValue: Scalar)
Параметры
repeatedValue
Скалярное значение для повторения.
shape
Форма
ShapedArraySlice
.Создает
ShapedArraySlice
указанной формы и одного повторяющегося скалярного значения.Декларация
public init(repeating repeatedValue: Scalar, shape: [Int])
Параметры
repeatedValue
Скалярное значение для повторения.
shape
Форма
ShapedArraySlice
.Диапазон скаляров из базового
ShapedArray
представленногоShapedArraySlice
.Декларация
var scalarRange: Range<Int> { get }
Вызывает замыкание с указателем на непрерывное хранилище
ShapedArraySlice
.Декларация
public func withUnsafeBufferPointer<Result>( _ body: (UnsafeBufferPointer<Scalar>) throws -> Result ) rethrows -> Result
Параметры
body
Замыкание с параметром
UnsafeBufferPointer
, указывающим на непрерывное хранилище дляShapedArraySlice
. Если такого хранилища не существует, оно создается. Если тело имеет возвращаемое значение, это значение также используется в качестве возвращаемого значения для методаwithUnsafeBufferPointer(_:)
. Аргумент-указатель действителен только на время выполнения метода.Вызывает данное замыкание с указателем на изменяемое непрерывное хранилище
ShapedArraySlice
.Декларация
public mutating func withUnsafeMutableBufferPointer<Result>( _ body: (inout UnsafeMutableBufferPointer<Scalar>) throws -> Result ) rethrows -> Result
Параметры
body
Замыкание с параметром
UnsafeMutableBufferPointer
, указывающим на непрерывное хранилище дляShapedArraySlice
. Если такого хранилища не существует, оно создается. Если тело имеет возвращаемое значение, это значение также используется в качестве возвращаемого значения для методаwithUnsafeMutableBufferPointer(_:)
. Аргумент-указатель действителен только на время выполнения метода.Декларация
public typealias Index = Int
Декларация
public typealias Element = ShapedArraySlice
Декларация
public typealias SubSequence = ShapedArraySlice
Декларация
public var indices: Range<Int> { get }
Декларация
public var startIndex: Int { get }
Декларация
public var endIndex: Int { get }
Получите доступ к массиву элементов, указанному индексом в ведущем измерении.
Декларация
public subscript(index: Int) -> Element { get set }
Параметры
index
Индекс массива элементов.
Получите доступ к подмассиву, указанному непрерывным диапазоном индексов.
Декларация
public subscript(bounds: Range<Int>) -> SubSequence { get set }
Параметры
bounds
Непрерывный диапазон индексов.
Текстовое представление этого
ShapedArraySlice
.Примечание
используйтеfullDescription
для некрасивого представления, показывающего все скаляры.Декларация
public var description: String { get }
Декларация
public var playgroundDescription: Any { get }
Декларация
public var customMirror: Mirror { get }
Декларация
public init(_ tensor: Tensor<Scalar>)
Декларация
public typealias ArrayLiteralElement = _TensorElementLiteral<Scalar>
Декларация
public init(arrayLiteral elements: _TensorElementLiteral<Scalar>...)
Декларация
public static func == (lhs: ShapedArraySlice, rhs: ShapedArraySlice) -> Bool
Декларация
public func hash(into hasher: inout Hasher)
Декларация
public func encode(to encoder: Encoder) throws
Декларация
public init(from decoder: Decoder) throws