参考: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. https双向认证訪问管理后台,採用USBKEY进行系统訪问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录

    近期项目需求,须要实现用USBKEY识别用户登录,採用https双向认证訪问管理后台管理界面,期间碰到过一些小问题,写出来给大家參考下. 1:前期准备工作 USBKEY 硬件:我买的是飞天诚信 epa ...

  2. Web开发者用什么编辑器?

    写在前面的话:从事web前端开发也有一段时间了,今天主要想分享的是文字(代码)编辑器.对于编辑器每个人都有自己的偏爱,也分不同语言的编码者,这里我就拿我接触过的来说说吧! Web开发者用什么编辑器? ...

  3. VueJS数据绑定文本显示:{{message}}

    HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  4. Num 34 : HDOJ : 1205 吃糖果 [ 狄利克雷抽屉原理 ]

           抽屉原理:          桌上有十个苹果,要把这十个苹果放到九个抽屉里,不管如何放,我们会发现至少会有一个抽屉里面至少放两个苹果.          这一现象就是我们所说的" ...

  5. Ubuntu 登陆异常-输入正确的密码后还会返回到登陆界面的问题

    问题表现: 启动到了登陆界面,输入对应的密码,发现一闪黑屏有返回到登陆界面,如此往复. 解决方法: 开机后在登陆界面按下shift + ctrl + F1进入tty命令行终端登陆,可以查看用户主目录下 ...

  6. ok6410[001] Ubuntu 16.04[64bit]嵌入式交叉编译环境arm-linux-gcc搭建过程图解

    开发PC:Ubuntu16.04.1 开发板:OK6410[飞凌公司出品] 目标:通过GPIO点亮LED ----------------------------------------------- ...

  7. Django-mysq数据库链接问题

    Django链接MySQL数据库有可能会报no model named MySQLdb, 解决办法: 首先安装pymysql 然后进入到项目目录,找到__init__.py文件,在里面添加 impor ...

  8. 通过WindowManager图片切换的效果

    最近为这个事情焦头烂额,原因无他.原来打算是把ViewPager放在WindowManager中,再设定一个定时器,让图片自动切换,但是搞了很久,发现无论如何,这个图片只显示一张.虽然日志看得出来图片 ...

  9. Kotlin基本语法笔记3之定义类、继承及创建实例

    定义类 class MyObject private constructor(name: String, age: Int) { private var name: String private va ...

  10. STM32 CAN通信

    最近在STM32上开发CAN通信相关内容,转载一篇个人认为不错的文章,看完了基本算明白了,能够实际操作了. 原文地址:  https://blog.csdn.net/ludaoyi88/article ...