Contents

subscript(_:)

Accesses the multiarray by using a linear offset.

Declaration

subscript(idx: Int) -> NSNumber { get set }

Parameters

  • idx:

    A linear offset index that represents a position the multiarray.

Return Value

A number.

Discussion

Use the subscript to linearly index a one-dimensional multiarray in the same way as a conventional array.

let oneDimensionalArray = try MLMultiArray(shape: [42], dataType: .int32)
let numberValue = oneDimensionalArray[7]

Multiarrays with more than one dimension order their elements in row-major order. In these cases, calculate a linear offset by summing the products of each dimension’s index with the dimension’s stride (See strides).

let multiArray = try MLMultiArray(shape: [5, 22, 17], dataType: .double)

let dimension0 = 3
let dimension1 = 5
let dimension2 = 7

var linearIndex = 0
linearIndex += dimension0 * multiArray.strides[0].intValue
linearIndex += dimension1 * multiArray.strides[1].intValue
linearIndex += dimension2 * multiArray.strides[2].intValue

let previousNumberValue = multiArray[linearIndex]
multiArray[linearIndex] = 2.718_28