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.