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

 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_min3
IDL> MIN(A, /ABSOLUTE)1
IDL> MIN(A, MAX=max)-6
IDL> max4
IDL> MIN(A, SUBSCRIPT_MAX=i_max)-6
IDL> i_max1

 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> A0       1       2       3       4
IDL> REVERSE(A)4       3       2       1       0
-------------------------------------------------------------------------------------
IDL> B = INDGEN(5, 2)
IDL> B0       1       2       3       45       6       7       8       9
IDL> REVERSE(B)4       3       2       1       09       8       7       6       5
IDL> REVERSE(B, 2)5       6       7       8       90       1       2       3       4

06 ROTATE  

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

 
IDL> C = INDGEN(3, 3)
IDL> C0       1       23       4       56       7       8
IDL> ROTATE(C, 1)6       3       07       4       18       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> C0       1       23       4       56       7       8
IDL> ROT(C, 90)2       5       81       4       70       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> A0       12       34       5
IDL> REFORM(A, 3, 2)0       1       23       4       5
IDL> REFORM(A, 3, 2, /OVERWRITE)0       1       23       4       5
IDL> A0       1       23       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> A0       1       23       4       56       7       8
IDL> REPLICATE_INPLACE, A, 4
IDL> A4       4       44       4       44       4       4
IDL> A[*] = 5
IDL> A5       5       55       5       55       5       5
IDL> A[*, 2] = 0
IDL> A5       5       55       5       50       0       0
IDL> REPLICATE_INPLACE, A, 4, 1, [1, 1]
IDL> A5       5       54       4       40       0       0
IDL> REPLICATE_INPLACE, A, 8, 2, [0, 0]
IDL> a8       5       58       4       48       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> A0       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> c0           1           2           3           4           5
IDL> count_c6

 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)56789

16  INTARR & Others  

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

 
IDL> INTARR(3, 3)0       0       00       0       00       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       55       5       5       55       5       5       5
IDL> MAKE_ARRAY(4, 3, /INDEX, /INTEGER)0       1       2       34       5       6       78       9      10      11
IDL> MAKE_ARRAY(4, 3, /INDEX, INCREMENT=2, /INTEGER)0       2       4       68      10      12      1416      18      20      22
IDL> MAKE_ARRAY(4, 3, /INDEX, INCREMENT=2, START=5, /INTEGER)5       7       9      1113      15      17      1921      23      25      27

           

【220】◀▶ IDL 数组操作函数说明相关推荐

  1. TypeScript常见的数组操作函数

    文章目录 TypeScript常见的数组操作函数 使用 `push()` 函数操作数组 使用 `pop()` 函数操作数组 使用 `shift()` 函数操作数组 使用 `unshift()` 函数操 ...

  2. php 之循环、数组操作函数

    php for循环数组 <?php$num = array(1,2,3,4,5,6,7,8,9,10);for($i = 0 ; $i < count($num) ; $i++){echo ...

  3. js判断数据类型(如数组)及数组操作函数

    在ES5的时候,js数据类型有6种:Number.String.Boolean.undefined.object.Null. 注:https://blog.csdn.net/u013592575/ar ...

  4. JavaScript原声的数组操作函数归纳

    1.filter() 方法,把不符合条件的过滤掉. 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素. 注意: filter() 不会对空数组进行检测, filter() 不会改 ...

  5. jquery 数组 操作函数

    var arrList = ['a','b','c','d'];          arrList.splice(jQuery.inArray('b',arrList),1); alert(arrLi ...

  6. python常用数值处理函数_SciPy基础数据操作函数

    2. SciPy基础 SciPy以NumPy为基础,与NumPy一样,SciPy有着稳定,成熟,且应用广泛的数值运算库.方便.易于使用.专为科学和工程设计的python工具包,它包括了统计.优化.整合 ...

  7. php 常用数组操作

    php常用的数组操作函数,包括数组的赋值.拆分.合并.计算.添加.删除.查询.判断.排序等 array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 <?p ...

  8. PHP内核探索之变量(4)- 数组操作

    原文:PHP内核探索之变量(4)- 数组操作 上一节(PHP内核探索之变量(3)- hash table),我们已经知道,数组在PHP的底层实际上是HashTable(链接法解决冲突),本文将对最常用 ...

  9. php数组操作集锦- 掌握了数组操作, 也就掌握了php

    作为只是作为一种生存手段, 搞技术不用钻牛角尖! 有些东西, 只要大致了解, 如果已经进行了深入的了解, 但还是不能解决,就不要继续了... "专"相关的字, 只有 "钻 ...

最新文章

  1. Android系统的命令行操作及C程序编译
  2. maven初学者常见错误汇总(三)
  3. 海量数据库解决方案2011031701
  4. python海贼王logo_Python实现的下载op海贼王网的图片
  5. linux php-fpm优化 php-fpm.conf 重要参数详解
  6. Flask框架(flask中设置响应信息的方法,返回json数据的方法)
  7. POJ - 4045 Power Station(树形dp/树的重心)
  8. 华为在中国建立其全球最大的网络安全透明中心
  9. SpringBoot2.x RabbitMQ Nacos Nacos-Config
  10. npm 使用报错合集
  11. 推荐一款数据恢复软件EasyRecovery
  12. 不要在锁的作用域之外通过指针或引用传递要保护的数据
  13. CVPR 新规严禁审稿期间公开宣传论文,可发 arXiv,LeCun:疯了吧!
  14. 几个比较实用的网址链接
  15. Python Numpy数组的降序排列 由大到小
  16. 2月14,情人节双语送祝福!
  17. Android系统的指纹开发
  18. 发年终奖了,可以安心过个好年了~
  19. SDNU-多校训练赛2-[ABF]
  20. 计算机程序是怎样运行的

热门文章

  1. perl:正则表达式部分
  2. f5申请并激活License
  3. Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果...
  4. dubbo开发环境和生产环境搭建
  5. 将不确定变成确定~frameset页面不能正确加载
  6. Effective C++ 之 Item 6 : 若不想使用编译器自动生成的函数,就该明确拒绝
  7. 常用排序算法 - 稳定性和复杂度分析
  8. Android的历史与花边
  9. Luhn(卢恩)算法,检测信用卡号的合法性
  10. Windows or Linux