参考: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  

最大值。
----------------------------------------------------------------------------------
Result = MAX( Array [, Max_Subscript] [, /ABSOLUTE] [, DIMENSION=value] [, MIN=variable] [, /NAN] [, SUBSCRIPT_MIN=variable])
----------------------------------------------------------------------------------
◈ Max_Subscript:最大值对应的索引值,存在此变量中
◈ ABSOLUTE:去元素的绝对值进行比较
◈ MIN=variable:获取最小值
◈ SUBSCRIPT_MIN=variable:一维数组中的最小值的索引值

 
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

最小值。
----------------------------------------------------------------------------------
Result = MIN( Array [, Min_Subscript] [, /ABSOLUTE] [, DIMENSION=value] [, MAX=variable] [, /NAN] [, SUBSCRIPT_MAX=variable])
----------------------------------------------------------------------------------
◈ Min_Subscript:最小值对应的索引值,存在此变量中
◈ ABSOLUTE:去元素的绝对值进行比较
◈ MAX=variable:获取最大值
◈ SUBSCRIPT_MAX=variable:一维数组中的最大值的索引值

 
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  

数组元素的总和。
----------------------------------------------------------------------------------
Result = TOTAL( Array [, Dimension] [, /CUMULATIVE] [, /DOUBLE] [, /INTEGER] [, /NAN] [, /PRESERVE_TYPE] )

 
IDL> A = INDGEN(11)
IDL> TOTAL(A)
55.000000
 04 PRODUCT  

数组元素总乘积。
----------------------------------------------------------------------------------
Result = PRODUCT(Array [, Dimension] [, /CUMULATIVE] [, /INTEGER] [, /NAN] [, /PRESERVE_TYPE] )

 
IDL> A = [1, 2, 3, 4, 5]
IDL> PRODUCT(A)
120.00000000000000
05 REVERSE  

数组反转。
----------------------------------------------------------------------------------
Result = REVERSE( Array [, Subscript_Index] [, /OVERWRITE] )
----------------------------------------------------------------------------------
◈ Subscript_Index:指定维度索引值(1、2、3等)的一个整数值,1 是对行进行反转,2 是对列进行反转

◈ IDL 从影像上读取的数组的原点在左上角,为了转换成符合正常顺序的数组可以对其进行列的反转,即 REVERSE(image, 2)

 
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  

数组旋转。
----------------------------------------------------------------------------------
Result = ROTATE(Array, Direction)
----------------------------------------------------------------------------------
◈ Direction:旋转角度所对应的数值,1-顺时针90°,2-180°中心对称,3-逆时针90°

 
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  

任意角度旋转。
----------------------------------------------------------------------------------
Result = ROT( A, Angle, [Mag, X0, Y0] [, /INTERP] [, CUBIC=value{-1 to 0}] [, MISSING=value] [, /PIVOT] )
----------------------------------------------------------------------------------
◈ Angle:顺时针旋转的角度值

 
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  

排序,从小到大,返回索引数组。
----------------------------------------------------------------------------------
Result = SORT(Array [, /L64] )

 
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  

相邻唯一值,返回索引数组。
----------------------------------------------------------------------------------
Result = UNIQ( Array [, Index] )
----------------------------------------------------------------------------------
◈ Index:用于处理成递增、唯一的数组

 
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  

更新一个数组中一部分或者全部为指定的数值。
----------------------------------------------------------------------------------
REPLICATE_INPLACE, Array, Value [, D1, Loc1 [, D2, Range]]
----------------------------------------------------------------------------------
◈ Value:欲更新的数值
◈ D1:欲更新的维度,1 为行,2 为列
◈ Loc1:坐标点所在行或列
----------------------------------------------------------------------------------
等效替换方法如下:
Array[*] = Value:数列都赋值 Value
Array[*, 1] = Value:整个第二行都赋值 Value
Array[*, 2:4] = Value:整个第三行到第五行都赋值 Value

 
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  

返回符合条件的数组。
----------------------------------------------------------------------------------
Result = WHERE( Array_Expression [, Count] [, COMPLEMENT=variable] [, /L64] [, NCOMPLEMENT=variable] [, /NULL] )
----------------------------------------------------------------------------------
◈ Array_Expression:数组表达式
◈ Count:返回数组的元素个数
◈ COMPLEMENT=variable:返回剩余数组中元素的索引数组
◈ NCOMPLEMENT=variable:返回剩余数组中元素的个数

 
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  

返回值是数组,分别表示维度、列、行、类型、个数。
----------------------------------------------------------------------------------
Result = SIZE( Expression [, /L64] [, /DIMENSIONS | , /FILE_LUN | , /FILE_OFFSET | , /N_DIMENSIONS | , /N_ELEMENTS | , /SNAME, | , /STRUCTURE | , /TNAME | , /TYPE] )
----------------------------------------------------------------------------------
◈ DIMENSIONS:列、行等
◈ N_DIMENSIONS:维度
◈ N_ELEMENTS:元素个数
◈ TNAME:数据类型,文本型
◈ TYPE:数据类型,数字码

 
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  

返回指定维度的数组。
----------------------------------------------------------------------------------
Result = INDGEN(D1[, ..., D8] [, /BYTE | , /COMPLEX | , /DCOMPLEX | , /DOUBLE | , /FLOAT | , INCREMENT=value | , /L64 | , /LONG | , /STRING | , /UINT | , /UL64 | , /ULONG] [, START=value] [, TYPE=value] )
----------------------------------------------------------------------------------
◈ Di:数组维度定义
◈ BYTE:创建 byte 数组
◈ DOUBLE:创建 double 数组
◈ FLOAT:创建 float 数组
◈ INCREMENT=value:定义增量步长
◈ START=value:开始整数设置,默认是 0
◈ TYPE=value:数据类型数字码(SIZE)

 
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  

返回指定维度的数组(浮点型)。
----------------------------------------------------------------------------------
Result = FINDGEN(D1 [, ..., D8] [, INCREMENT=value] [, START=value])

 
IDL> FINDGEN(5, START=1)
1.0000000 2.0000000 3.0000000 4.0000000 5.0000000
 

BINDGEN:字节型
DINDGEN:双精度浮点型
LINDGEN:32位有符号长整型
L64INDGEN:64位有符号长整型
UINDGEN:16位无符号整形
SINDGEN:字符串

 
IDL> SINDGEN(5, START=5)
5
6
7
8
9
16  INTARR & Others  

返回指定维度全是 0 的数组。
----------------------------------------------------------------------------------
Result = INTARR( D1[, ..., D8] [, /NOZERO] )

 
IDL> INTARR(3, 3)
0 0 0
0 0 0
0 0 0
 

FLTARR:浮点型
BYTARR:字节型
DBLARR:双精度浮点型
LONARR:32位有符号长整型
LON64ARR:64位有符号长整型
UINTARR:16位无符号整形
STRARR:字符串

   
 17 MAKE_ARRAY   

动态创建数组。
----------------------------------------------------------------------------------
Result = MAKE_ARRAY ( [D1[, ..., D8]], DIMENSION=vector, INCREMENT=value, /INDEX, /NOZERO, SIZE=vector, START=value, TYPE=type_code, VALUE=value, /BOOLEAN, /BYTE, /COMPLEX, /DCOMPLEX, /DOUBLE, /FLOAT, /INTEGER, /L64, /LONG, /OBJ, /PTR, /STRING, /UINT, /UL64, /ULONG )
----------------------------------------------------------------------------------
◈ INCREMENT=value:增量步长
◈ INDEX:等差增加
◈ NOZERO:不出现0值,默认情况下是0值
◈ START=value:开始的数值
◈ TYPE=type_code:返回值的类型,0为Undefined、1为Byte、2为Int等
◈ VALUE=value:设置固定值
◈ BOOLEAN:设置一个布尔型数组

 
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
           

【220】◀▶ IDL 数组操作函数说明的更多相关文章

  1. JavaScript中常见的数组操作函数及用法

    JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...

  2. JavaScript 数组操作函数--转载+格式整理

    JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...

  3. 初探numpy——广播和数组操作函数

    numpy广播(Broadcast) 若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算 import numpy as np a=np.array( ...

  4. php中数组操作函数

    一.数组操作的基本函数数组的键名和值array_values($arr);  获得数组的值array_keys($arr);  获得数组的键名array_flip($arr);  数组中的值与键名互换 ...

  5. 量化投资_Multicharts数组操作函数_append()追加函数(自定义)

    1. Multicharts中关于数组的操作比较麻烦,而且当中所谓的动态数组的定义并不是像其他语言那种的概念.因此要对数组进行元素“”追加“”的话,需要重新更改数组的索引,然后再最后一个位置添加val ...

  6. js 数组操作函数有:push,pop,join,shift,unshift,slice,splice,concat

    (1)push 和 pop 这两个函数都是对数组从尾部进行压入或弹出操作.push(arg1,arg2,...)可以每次压入一个或多个元素,并返回更新后的数组长度.注意如果参数也是数组的话,则是将全部 ...

  7. 字符串、数组操作函数 Copy Concat Delete Insert High MidStr Pos SetLength StrPCopy TrimLeft

    对字符串及数组的操作,是每个程序员必须要掌握的.熟练的使用这些函数,在编程时能更加得心应手. 1.Copy 功能说明:该函数用于从字符串中复制指定范围中的字符.该函数有3个参数.第一个参数是数据源(即 ...

  8. 【五】PHP数组操作函数

    1.输出数组的结构:bool print_r(数组); $arr=array('jack','mike','tom'); print_r($arr);//Array ( [0] => jack ...

  9. Javascript数组操作函数总结

    (1) shift  删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4, ...

随机推荐

  1. D堆的实现

    实现上一篇博客(http://blog.csdn.net/buleriver/article/details/38469977)说的D堆.假设把mD设置成2.D堆就退化成二叉堆,也就是说.二叉堆是D堆 ...

  2. Ecilpse绑定jdk的源码

    因为近期才入职,所以电脑环境才配好,今天在写代码的时候,想查看源码,发现不能查看,所以在网上百度了一下: 下面是解决方法: 1.在Ecilpse的窗体下,点击Preferences 2.然后点击Jav ...

  3. 发送验证码60s倒计时实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. C#Soket组播

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  5. 五、Web框架基础(2)

    Tornado 异步协程编程.(其实是异步IO而非真正的异步,从内核拷贝到用户空间的过程还是同步的) 适合用户量大.高并发,如抢票.网页游戏.在线聊天等场景:或大量HTTP持久连接,通过单TCP持久连 ...

  6. linux安装ssh(转载)

    CentOS安装ssh最笨的方法:yum install ssh yum install openssh-server/etc/init.d/sshd status看sshd服务的状态/etc/ini ...

  7. 九度OJ 1134:密码翻译 (翻译)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1988 解决:810 题目描述: 在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报 ...

  8. 九度OJ 1107:搬水果 (贪心)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5190 解决:1747 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆 ...

  9. Android笔记之获取显示器宽高

    原先的Display.getWidth().Display.getHeight()已废弃 推荐的获取Display宽高的方法如下 DisplayMetrics metrics = new Displa ...

  10. php date之间的相互转换

    字符串转成date $str =date("Y-m-d H:i:s",strtotime("2011-12-12 14:23:01")); echo $str; ...