PACK (ARRAY , MASK , VECTOR)
用途
從陣列中取得部分或所有元素,並在遮罩的控制下將它們包裝成一維陣列。
類別
轉換函數
引數類型和屬性
- ARRAY
- 來源陣列,其元素變成結果的一部分。 對應的實際引數可以有任何資料類型。
- MASK
LOGICAL類型的引數符合 ARRAY。 它會決定從來源陣列中取得哪些元素。 如果它是純量,則其值會套用至 ARRAY中的所有元素。- VECTOR (選用)
- 如果遮罩未選取足夠的元素,則使用其元素來填寫結果的填補陣列。 它是一維陣列,具有與 ARRAY 相同的資料類型及類型參數,且至少具有與 MASK中 true 值相同的元素數目。 如果 MASK 是具有值 的純量。TRUE., VECTOR 必須至少具有與 ARRAY中陣列元素一樣多的元素。
結果值
結果一律是一維陣列,其資料類型和類型參數與 ARRAY 相同。
結果的大小取決於選用引數:
- 如果指定 VECTOR ,則結果陣列的大小等於 VECTOR 的大小。
- 否則,它會等於 MASK 中的 TRUE 陣列元素數目,如果 MASK 是值為 的純量,則會等於 ARRAY 中的元素數目。TRUE.。
ARRAY 中的陣列元素以陣列元素順序取得,以形成結果。 如果 MASK 中對應的陣列元素是 。TRUE., 來自 ARRAY 的元素放置在結果結尾。
如果結果中有任何元素保持空白 (因為 VECTOR 存在,且具有比 更多的元素。TRUE。 mask中的值,結果中的其餘元素會設為 VECTOR 中的對應值。
範例
! A is the array | 0 7 0 |
! | 1 0 3 |
! | 4 0 0 |
! Take only the non-zero elements of this sparse array.
! If there are less than six, fill in -1 for the rest.
RES = PACK(A, MASK= A .NE. 0, VECTOR=(/-1,-1,-1,-1,-1,-1/)
! The result is (/ 1, 4, 7, 3, -1, -1 /).
! Elements 1, 4, 7, and 3 are taken in order from A
! because the value of MASK is true only for these
! elements. The -1s are added to the result from VECTOR
! because the length (6) of VECTOR exceeds the number
! of .TRUE. values (4) in MASK.