Array
# 简介
数组(Array)是一种灵活的数据结构,数组类型包括一维数组、二维数组、三维数组、多维数组等。当待解决问题涉及高维度模型、线性代数等时,用户可以使用Array类。PIE-Engine Studio提供数组相关算法,包括但不限于四则运算、按位运算、逻辑运算、切片、矩阵计算。
# Array
构造函数,返回一个由给定参数构建的Array对象。
函数 | 返回值 |
---|---|
Array(values, pixelType=7,row=0, col=0 ,depth=0) | Array |
参数 | 类型 | 说明 |
---|---|---|
values | Number|Array | 数值或Js的数组对象 |
pixelType | Number | 数据类型,5:整型,6:单精度浮点型,7:双精度浮点型 |
row | Number | 矩阵的行数 |
col | Number | 矩阵的列数 |
depth | Number | 矩阵的深度 |
# 示例
array2D_1 = pie.Array(1, 7, 5, 5, 0)
print(array2D_1.getInfo())
# abs
在元素的基础上,计算输入的绝对值。
函数 | 返回值 |
---|---|
abs() | Array |
# 示例
array = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
print(array.abs().getInfo())
# accum
通过将结果的每个元素设置为沿该轴到当前位置(包括当前位置)的元素累积值。可用于累积和、单调递增序列等。
函数 | 返回值 |
---|---|
accum(self,axis,reducer) | Array |
参数 | 类型 | 说明 |
---|---|---|
axis | int | 沿其进行累加的轴 |
reducer | Reducer | 累积计算器。默认值为SUM,以生成沿给定轴的每个向量的累计计算值 |
# 示例
array = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
print(array.accum(0, pie.reducer.PIEReducer()).
# add
以每个元素为单位,做左边矩阵与右边矩阵相加的运算。
函数 | 返回值 |
---|---|
add(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|Int | 加号右侧矩阵或数值 |
# 示例
array = pie.Array([[0, 1, 2], [3, 4, 5]])
print(array.add(1).getInfo())
print(array.add(array).getInfo())
# And
矩阵“与”运算,在元素的基础上,如果两个值都不为零,则返回1。
函数 | 返回值 |
---|---|
And(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.And(array2).getInfo())
# bitsToArray
将整数位转换为数组。输出数组的元素个数与输入值的位数相同,当输入值为0时输出数组中只有0。
函数 | 返回值 |
---|---|
bitsToArray(input) | Array |
参数 | 类型 | 说明 |
---|---|---|
input | Number | 输入数值 |
# 示例
print(pie.Array().bitsToArray(5).getInfo())
print(pie.Array().bitsToArray(0).getInfo())
# bitwiseAnd
矩阵按位“与”运算。
函数 | 返回值 |
---|---|
bitwiseAnd(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.bitwiseAnd(array2).getInfo())
# bitwiseNot
矩阵按位“非”运算。
函数 | 返回值 |
---|---|
bitwiseNot() | Array |
# 示例
array = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
print(array.bitwiseNot().getInfo())
# bitwiseOr
矩阵按位“或”运算。
函数 | 返回值 |
---|---|
bitwiseOr(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.bitwiseOr(array2).getInfo())
# bitwiseXor
矩阵按位“异或”运算。
函数 | 返回值 |
---|---|
bitwiseXor(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.bitwiseXor(array2).getInfo())
# cat
沿着给定的轴将多个数组连接成一个数组。每个数组的维数和长度必须在除连接轴外的所有轴上都相同。
函数 | 返回值 |
---|---|
cat (self,arrays,axis=0) | Array |
参数 | 类型 | 说明 |
---|---|---|
arrays | Array | 要连接的数组 |
axis | Int | 要连接的轴,默认为0 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([9])
print(array1.cat(array2).getInfo())
# divide
矩阵对应位置上的元素相除。
函数 | 返回值 |
---|---|
divide(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 除号右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.divide(array2).getInfo())
# get
获取数组内指定索引的值,返回元素值。
函数 | 返回值 |
---|---|
get(self, value) | value |
参数 | 类型 | 说明 |
---|---|---|
index | int | 数组的索引 |
# 示例
array = pie.Array([1, 2, 3, 4, 5, 6])
print(array.get(1).getInfo())
# length
获取数组的长度,返回长度值。
函数 | 返回值 |
---|---|
length(self) | value |
参数 | 类型 | 说明 |
---|---|---|
self | None | 默认没有参数 |
# 示例
array = pie.Array([1, 2, 3,4, 5, 6])
print(array.length().getInfo())
# matrixCholeskyDecomposition
计算矩阵Cholesky方式分解,分解后满足A = L*L',返回包含1个名为“L”的条目的字典。目标矩阵必须为对称正定矩阵。
函数 | 返回值 |
---|---|
matrixCholeskyDecomposition() | Dictionary |
# 示例
array = pie.Array([[1,1,1],[1,2,1],[1,1,3]]);
print(array.matrixCholeskyDecomposition().g
# matrixDeterminant
计算矩阵行列式。
函数 | 返回值 |
---|---|
matrixDeterminant() | double |
# 示例
array = pie.Array([[1,2],[3,4]])
print(array.matrixDeterminant().getInfo())
# matrixDiagonal
计算矩阵的单列对角线矩阵。
函数 | 返回值 |
---|---|
matrixDiagonal() | Array |
# 示例
arr = pie.Array([[1, 2, 3], [3, 4, 5]])
print(arr.matrixDiagonal().getInfo())
# matrixFnorm
获取矩阵的Frobenius范数。
函数 | 返回值 |
---|---|
matrixFnorm() | double |
# 示例
arr = pie.Array([[1, 2, 3], [3, 4, 5]])
print(arr.matrixFnorm().getInfo())
# matrixInverse
获取矩阵的逆矩阵。
函数 | 返回值 |
---|---|
matrixInverse() | Array |
# 示例
arr = pie.Array([[1,2],[-1,-3]])
print(arr.matrixInverse().getInfo())
# matrixLUDecomposition
计算矩阵的LU分解,使得P×input=L×U,其中L是下三角矩阵(具有单位对角线项),U是上三角矩阵,P是置换矩阵。输入矩阵必须是可逆方阵。返回包含名为“L”、“U”和“P”的条目的字典。
函数 | 返回值 |
---|---|
matrixLUDecomposition() | Dictionary |
# 示例
arr = pie.Array([[0,3,1],[0,4,-2],[2,1,2]])
print(arr.matrixLUDecomposition().getInfo()
# matrixMultiply
矩阵乘法,返回矩阵A*B的结果。要求左操作数矩阵的列数和右操作数矩阵的行数相同。
函数 | 返回值 |
---|---|
matrixMultiply(right) | Image |
参数 | 类型 | 说明 |
---|---|---|
right | Array | 左操作矩阵相乘右操作矩阵 |
# 示例
array2D_1 = pie.Array(100, 7, 5, 5, 0)
arrayResult_1 = array2D_1.matrixMultiply(array2D_1)
print(arrayResult_1.getInfo())
array2D_2 = pie.Array([[0,1,2],[3,4,5],[6,7,8]]);
arrayResult_2 = array2D_2.matrixMultiply(array2D_2);
print(arrayResult_2.getInfo());
# matrixPseudoInverse
计算矩阵的伪逆矩阵。
函数 | 返回值 |
---|---|
matrixPseudoInverse() | Array |
# 示例
array = pie.Array([[0, 1, 2, -3], [4, -5, 6, -7, 8]])
print(array.matrixPseudoInverse().getInfo())
# matrixQRDecomposition
计算矩阵的QR分解,求解两个矩阵Q和R,使得输入矩阵=Q*R,其中Q是正交矩阵,R是上三角矩阵。返回包含名为“Q”和“R”的条目的字典。
函数 | 返回值 |
---|---|
matrixQRDecomposition () | Dictionary |
# 示例
array = pie.Array([[0,3,1],[0,4,-2],[2,1,2]])
print(array.matrixQRDecomposition().getInfo(
# matrixSingularValueDecomposition
计算矩阵的奇异值分解,使得A= USV',其中U和V正交阵,S是对角阵。返回包含名为“U”、“S”和“V”的条目的字典。
函数 | 返回值 |
---|---|
matrixSingularValueDecomposition() | Dictionary |
# 示例
arr = pie.Array([[1, 2, 3], [3, 4, 5]])
print(arr.matrixSingularValueDecomposition(
# matrixSolve
求解矩阵方程A*x=B中的x,若A超定,则求最小二乘解。
函数 | 返回值 |
---|---|
matrixSolve(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array | 右侧矩阵 |
# 示例
arr1 = pie.Array([[1, 2, 3], [3, 4, 5]])
arr2 = pie.Array([[10, 20, 30], [3, 4, 5]])
print(arr.matrixSolve(arr2).getInfo())
# matrixToDiag
计算单列矩阵的正方形对角矩阵。
函数 | 返回值 |
---|---|
matrixToDiag() | Array |
# 示例
array = pie.Array([[1],[2],[3]])
print(array.matrixToDiag().getInfo())
# matrixTrace
计算矩阵的迹。
函数 | 返回值 |
---|---|
matrixTrace() | double |
# 示例
arr = pie.Array([[1, 2, 3], [3, 4, 5]])
print(arr.matrixTrace().getInfo())
# matrixTranspose
返回矩阵的转置矩阵。
函数 | 返回值 |
---|---|
matrixTranspose() | Array |
# 示例
arr = pie.Array([[1, 2, 3], [3, 4, 5]])
print(arr.matrixTranspose().getInfo())
# multiply
矩阵对应位置上的元素相乘。
函数 | 返回值 |
---|---|
multiply(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 乘号右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.multiply(array2).getInfo())
# Not
矩阵“非”运算,对于元素,如果输入为非零,则返回0,否则返回1。
函数 | 返回值 |
---|---|
Not() | Array |
# 示例
array = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
print(array.Not().getInfo())
# Or
矩阵“或”运算,在元素的基础上,如果两个值中存在一值不为零,则返回1。
函数 | 返回值 |
---|---|
Or(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.Or(array2).getInfo())
# slice
通过按“step”的增量沿给定轴从“start”(包含)到“end”(不包含)的每个位置切片,创建子阵列。结果将具有与输入一样多的维度,并且在除切片轴之外的所有方向上的长度都相同,其中长度是从“start”到“end”的位置数,这些位置在“轴”的输入数组长度范围内。这意味着,如果start=end,或者start或end值完全超出范围,则结果可以是沿着给定轴的长度0。
函数 | 返回值 |
---|---|
slice(self,axis, start, end, step) | Array |
参数 | 类型 | 说明 |
---|---|---|
axis | int | 轴 |
start | int | 沿“axis”的第一个切片(包括第一个切片)的坐标。负数用于定位相对于数组末尾的切片开始位置,其中-1从轴上的最后一个位置开始,-2从倒数第二个位置开始,依此类推。默认值为0 |
end | int | 停止切片的坐标(独占)。默认情况下,这将是给定轴的长度。负数用于相对于数组的末端定位切片的结束位置,其中-1将排除最后一个位置,-2将排除最后两个位置,依此类推。默认值为null |
# 示例
array = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
print(array.slice(0, 1, 3, 1).getInfo())
# subtract
矩阵对应位置上元素相减。
函数 | 返回值 |
---|---|
subtract(right) | Array |
参数 | 类型 | 说明 |
---|---|---|
right | Array|int | 减号右侧矩阵或数值 |
# 示例
array1 = pie.Array([0, 1, 2, -3, 4, -5, 6, -7, 8])
array2 = pie.Array([0, 10, 2, -30, 4, -50, 6, -7, 8])
print(array1.subtract(array2).getInfo())
# transpose
转换数组的两个维度。
函数 | 返回值 |
---|---|
transpose(axis1,axis2) | Array |
参数 | 类型 | 说明 |
---|---|---|
axis1 | int | 需要转换的第一个轴,默认值为0 |
axis2 | int | 需要转换的第二个轴,默认值为1 |
# 示例
array = pie.Array([[0, 1, 2, -3],[4, -5, 6, -7, 8]])
print(array.transpose(0, 1).getInfo())