【220】◀▶ IDL 数组操作函数说明
参考: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
|
||
浙公网安备 33010602011771号