參考:Array Creation Routines —— 創建數組函數
參考:Array Manipulation Routines —— 操作數組函數
01 | MAX | 最大值。 | |
02 | MIN | 最小值。 | |
03 | TOTAL | 數組元素的總和。 | |
04 | PRODUCT | 數組元素總乘積。 | |
05 | REVERSE | 數組反轉。 | |
06 | ROTATE | 數組旋轉。 | |
07 | ROT | 任意角度旋轉。 | |
08 | SORT | 排序,從小到大,返回索引數組。 | |
09 | UNIQ | 相鄰唯一值,返回索引數組。 | |
10 | REFORM | 調整數組的維度,元素個數不變。 | |
11 | REPLICATE_INPLACE | 更新一個數組中一部分或者全部為指定的數值。 | |
12 | WHERE | 返回符合條件的數組。 | |
13 | SIZE | 返回值是數組,分別表示維度、列、行、類型、個數。 | |
14 | INDGEN | 返回指定維度的數組。 | |
15 | FINDGEN & Others | 返回指定維度的數組(浮點型)。 | |
16 | INTARR & Others | 返回指定維度全是 0 的數組。 | |
17 | MAKE_ARRAY | 動態創建數組。 |
序號 | 名稱 | 功能說明 |
語法 & 舉例 | ||
01 | MAX | 最大值。 |
IDL> A = [3, 4, -5, -6, -3, 2, 1] IDL> MAX(A) 4 IDL> MAX(A, i_max) 4 IDL> i_max 1 IDL> MAX(A, /ABSOLUTE) -6 IDL> MAX(A, MIN=min) 4 IDL> min -6 IDL> MAX(A, MIN=min, SUBSCRIPT_MIN=i_min) 4 IDL> i_min 3 |
||
02 | MIN |
|
最小值。 |
IDL> A = [3, 4, -5, -6, -3, 2, 1] IDL> MIN(A) -6 IDL> MIN(A, i_min) -6 IDL> i_min 3 IDL> MIN(A, /ABSOLUTE) 1 IDL> MIN(A, MAX=max) -6 IDL> max 4 IDL> MIN(A, SUBSCRIPT_MAX=i_max) -6 IDL> i_max 1 |
|
03 | TOTAL | 數組元素的總和。 |
IDL> A = INDGEN(11) IDL> TOTAL(A) 55.000000 |
||
04 | PRODUCT | 數組元素總乘積。 |
IDL> A = [1, 2, 3, 4, 5] IDL> PRODUCT(A) 120.00000000000000 |
||
05 | REVERSE | 數組反轉。
|
IDL> A = INDGEN(5) IDL> A 0 1 2 3 4 IDL> REVERSE(A) 4 3 2 1 0 ------------------------------------------------------------------------------------- IDL> B = INDGEN(5, 2) IDL> B 0 1 2 3 4 5 6 7 8 9 IDL> REVERSE(B) 4 3 2 1 0 9 8 7 6 5 IDL> REVERSE(B, 2) 5 6 7 8 9 0 1 2 3 4 |
||
06 | ROTATE | 數組旋轉。 |
IDL> C = INDGEN(3, 3) IDL> C 0 1 2 3 4 5 6 7 8 IDL> ROTATE(C, 1) 6 3 0 7 4 1 8 5 2 |
||
07 | ROT | 任意角度旋轉。 |
IDL> C = INDGEN(3, 3) IDL> C 0 1 2 3 4 5 6 7 8 IDL> ROT(C, 90) 2 5 8 1 4 7 0 3 6 |
||
08 | SORT | 排序,從小到大,返回索引數組。 |
IDL> A = [4, 3, 7, 1, 2] IDL> SORT(A) 3 4 1 0 2 IDL> A[SORT(A)] 1 2 3 4 7 IDL> A[REVERSE(SORT(A))] 7 4 3 2 1 IDL> REVERSE(A[SORT(A)]) 7 4 3 2 1 |
||
09 | UNIQ | 相鄰唯一值,返回索引數組。 |
IDL> array = [1, 2, 2, 5, 6, 6, 5] IDL> UNIQ(array) 0 2 3 5 6 IDL> array[UNIQ(array)] 1 2 5 6 5 IDL> UNIQ(array, SORT(array)) 0 1 3 4 IDL> array[UNIQ(array, SORT(array))] 1 2 5 6 |
||
10 | REFORM | 調整數組的維度,元素個數不變。 ---------------------------------------------------------------------------------- Result = REFORM( Array, D1[, ..., D8] [, /OVERWRITE] ) ---------------------------------------------------------------------------------- ◈ Di:維度調整,保證元素個數相同,否則無法實現 ◈ OVERWRITE:將返回的數組值賦值給 Array |
IDL> A = INDGEN(2, 3) IDL> A 0 1 2 3 4 5 IDL> REFORM(A, 3, 2) 0 1 2 3 4 5 IDL> REFORM(A, 3, 2, /OVERWRITE) 0 1 2 3 4 5 IDL> A 0 1 2 3 4 5 |
||
11 | REPLICATE_INPLACE | 更新一個數組中一部分或者全部為指定的數值。 |
IDL> A = INDGEN(3, 3) IDL> A 0 1 2 3 4 5 6 7 8 IDL> REPLICATE_INPLACE, A, 4 IDL> A 4 4 4 4 4 4 4 4 4 IDL> A[*] = 5 IDL> A 5 5 5 5 5 5 5 5 5 IDL> A[*, 2] = 0 IDL> A 5 5 5 5 5 5 0 0 0 IDL> REPLICATE_INPLACE, A, 4, 1, [1, 1] IDL> A 5 5 5 4 4 4 0 0 0 IDL> REPLICATE_INPLACE, A, 8, 2, [0, 0] IDL> a 8 5 5 8 4 4 8 0 0 |
||
12 | WHERE | 返回符合條件的數組。 |
IDL> A = INDGEN(10) IDL> A 0 1 2 3 4 5 6 7 8 9 IDL> WHERE(A GT 5, count, COMPLEMENT=c, NCOMPLEMENT=count_c) 6 7 8 9 IDL> c 0 1 2 3 4 5 IDL> count_c 6 |
||
13 | SIZE | 返回值是數組,分別表示維度、列、行、類型、個數。 |
IDL> A = INDGEN(5,5) IDL> SIZE(A) 2 5 5 2 25 IDL> SIZE(A, /N_ELEMENTS) 25 IDL> SIZE(A, /DIMENSIONS) 5 5 IDL> SIZE(A, /N_DIMENSIONS) 2 IDL> SIZE(A, /TYPE) 2 IDL> SIZE(A, /TNAME) INT |
||
14 | INDGEN | 返回指定維度的數組。 |
IDL> INDGEN(5, INCREMENT=3) 0 3 6 9 12 IDL> INDGEN(5, INCREMENT=3, START=10) 10 13 16 19 22 IDL> INDGEN(5, INCREMENT=3, START=10, TYPE=4) 10.000000 13.000000 16.000000 19.000000 22.000000 IDL> INDGEN(5, /FLOAT, START=10) 10.000000 11.000000 12.000000 13.000000 14.000000 |
||
15 | FINDGEN & Others | 返回指定維度的數組(浮點型)。 |
IDL> FINDGEN(5, START=1) 1.0000000 2.0000000 3.0000000 4.0000000 5.0000000 |
||
BINDGEN:字節型 |
IDL> SINDGEN(5, START=5) 5 6 7 8 9 |
||||
16 | INTARR & Others | 返回指定維度全是 0 的數組。 |
IDL> INTARR(3, 3) 0 0 0 0 0 0 0 0 0 |
||
FLTARR:浮點型 |
|||||
17 | MAKE_ARRAY | 動態創建數組。 |
IDL> MAKE_ARRAY(4, 3, VALUE=5, /INTEGER) 5 5 5 5 5 5 5 5 5 5 5 5 IDL> MAKE_ARRAY(4, 3, /INDEX, /INTEGER) 0 1 2 3 4 5 6 7 8 9 10 11 IDL> MAKE_ARRAY(4, 3, /INDEX, INCREMENT=2, /INTEGER) 0 2 4 6 8 10 12 14 16 18 20 22 IDL> MAKE_ARRAY(4, 3, /INDEX, INCREMENT=2, START=5, /INTEGER) 5 7 9 11 13 15 17 19 21 23 25 27 |
||