矩陣與矩陣數學
矩陣被用作許多數學函式的輸入和輸出。本使用者指南的此章節涵蓋矩陣建立、操作和矩陣數學的基礎知識。
矩陣
可以使用 matrix
函式建立矩陣。matrix 函式會傳遞一個 arrays
列表,其中每個陣列代表矩陣中的一個列。
以下範例會建立一個二乘二的矩陣。
matrix(array(1, 2),
array(4, 5))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"return-value": [
[
1,
2
],
[
4,
5
]
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}}
列和欄標籤
矩陣可以有欄和列以及標籤。可以使用函式 setRowLabels
、setColumnLabels
、getRowLabels
和 getColumnLabels
來設定和取得標籤。標籤值是使用字串陣列設定的。
以下範例會設定列和欄標籤。在使用者指南的其他章節中,會顯示範例說明函式如何傳回已設定標籤的矩陣。
以下是在矩陣上設定和取得列和欄標籤的簡單範例。
let(echo="d, e",
a=matrix(array(1, 2),
array(4, 5)),
b=setRowLabels(a, array("rowA", "rowB")),
c=setColumnLabels(b, array("colA", "colB")),
d=getRowLabels(c),
e=getColumnLabels(c))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"d": [
"rowA",
"rowB"
],
"e": [
"colA",
"colB"
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
存取列和欄
可以使用 rowAt
和 colAt
函式存取矩陣的列和欄。
以下範例會建立一個 2x2 矩陣,並傳回矩陣的第二欄。請注意,在此範例中,矩陣會傳遞變數,而不是直接傳遞陣列清單。
let(a=array(1, 2),
b=array(4, 5),
c=matrix(a, b),
d=colAt(c, 1))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"d": [
2,
5
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
矩陣屬性
矩陣也可以有與之關聯的任意一組命名屬性。某些函式,例如 termVectors
函式,會傳回包含描述矩陣中資料的屬性的矩陣。
可以使用 getAttribute
函數依名稱檢索屬性,並使用 getAttributes
函數傳回整個屬性映射。
矩陣維度
可以使用 rowCount
和 columnCount
函數來確定矩陣的維度。
以下範例檢索矩陣的維度。
let(echo="b,c",
a=matrix(array(1, 2, 3),
array(4, 5, 6)),
b=rowCount(a),
c=columnCount(a))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"b": 2,
"c": 3
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
矩陣轉置
可以使用 transpose
函數轉置矩陣。
下面顯示矩陣轉置的範例
let(a=matrix(array(1, 2),
array(4, 5)),
b=transpose(a))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"b": [
[
1,
4
],
[
2,
5
]
]
},
{
"EOF": true,
"RESPONSE_TIME": 24
}
]
}
}
矩陣總和
可以使用 sumRows
和 sumColumns
函數對矩陣的行和列求和。以下是 sumRows
函數的範例,該函數傳回一個陣列,其中包含每一行的總和。
let(a=matrix(array(1, 2, 3),
array(4, 5, 6)),
b=sumRows(a))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"b": [
6,
15
]
},
{
"EOF": true,
"RESPONSE_TIME": 2
}
]
}
}
grandSum
函數傳回矩陣中所有值的總和。以下是 grandSum
函數的範例
let(a=matrix(array(1, 2, 3),
array(4, 5, 6)),
b=grandSum(a))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"b": 21
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
純量矩陣數學
適用於向量的相同純量數學函數也適用於矩陣:scalarAdd
、scalarSubtract
、scalarMultiply
、scalarDivide
。
以下是 scalarAdd
函數的範例,該函數將純量值新增至矩陣中的每個元素。
let(a=matrix(array(1, 2),
array(4, 5)),
b=scalarAdd(10, a))
當此表示式傳送至 /stream
處理常式時,它會以回應
{
"result-set": {
"docs": [
{
"b": [
[
11,
12
],
[
14,
15
]
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}