参考: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. Solaris 下解决上网问题以及远程登录问题

    解决乱码问题 参考文章 http://www.jb51.net/os/Solaris/1656.html solaris 显示乱码的解决方法 现象: 利用命令 : LANG=zh; export LA ...

  2. java web 站点头像上传处理 (springmvc +bootstrap+cropper)

    制作头像上传.请依据您的实际需求.改动代码,不全然正确.仅供參考! 前端页面设计使用bootstrap ,头像预览和剪裁工具使用cropper 后台使用springmvc. 如今来看前端的页面设计 前 ...

  3. Amazon SNS移动推送更新——新增百度云推送和Windows平台支持

    Amazon SNS(Simple Notification Service)是一种基于云平台的消息通知和推送服务. SNS提供简单的 Web 服务接口和基于浏览器的管理控制台让用户可以简易设置.执行 ...

  4. Vue 资源

    一. 资源教程 综合类 vuejs 英文资料 Vue中文资料总汇 Vue.js 的一些资源索引 vue资料 入门类 vue 快速入门 Vue.js 中文系列视频教程 on Laravist 英文教程 ...

  5. 小printf的故事:什么是真正的程序员?

    http://kb.cnblogs.com/page/570194/ 作者: 削微寒  来源: 博客园  发布时间: 2017-06-06 10:03  阅读: 33004 次  推荐: 98   原 ...

  6. C++中字符数组和字符串string

    字符数组 C++中字符数组用char str[]能够用来表示一个字符串. (1)   数组的大小和字符串的长度. 数组的大小一定要大于字符串的长度,由于系统会自己主动补上一个'\0'作为字符串的结束标 ...

  7. 对JavaBean创建的一点改进

    在看了<Effective Java>Item2中对JavaBean的描述后,再结合Item1和Builder模式,遂想有没有其他方式避免JavaBean创建的线程安全问题呢? 以如下Ja ...

  8. 当CSDN携手Markdown

    当CSDN携手Markdown Tags: CSDN Markdown 当CSDN携手Markdown Markdown CSDN-Markdown 也不知道是不是基于 Github 崛起的因素,Ma ...

  9. secureCRT与vim配置

    折腾了一天,给服务器新装了centos系统,用crt连接,vim用着很不习惯. 修改配色,快捷键啥的都不怎么起效. 后来发现.crt里的会话选项-终端-仿真 里配成xtream,使用颜色方案就可以了.

  10. Hibernate ManyToOne Mappings 多对一关联映射

    Hibernate ManyToOne Mappings 多对一关联映射 Hibernate框架的使用步骤: 1.创建Hibernate的配置文件(hibernate.cfg.xml)2.创建持久化类 ...