参考: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. LeetCode 第 3 题(Longest Substring Without Repeating Characters)

    LeetCode 第 3 题(Longest Substring Without Repeating Characters) Given a string, find the length of th ...

  2. Android学习系列(二)布局管理器之线性布局的3种实现方式

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39643669 LinearLayout是Android控件中的线性布局控件,它包括的子控件 ...

  3. PHP开发环境简析

    单工作机情况 windows + wamp windows + XShell类终端工具 + linux虚拟机 Ubuntu桌面版 自带终端 Mac OS + mamp Mac OS 自带终端 Mac ...

  4. 调用Camera返回为空的分析及处理方法

    前言 大家可能遇到了这种情况.调用Camera,然后指定自己定义的保存路径,结果返回的Intent为空.我们来分析一下原因. 分析 首先看Camera的部分逻辑,在源代码中的Camera.java的d ...

  5. Java解析Property文件

    在Java项目中一些配置參数保存在Property文件里,这样能保证不改动原代码直接改动Property文件. PropertyParser.java package com.discover.par ...

  6. 图像处理之opencv---mat、cvmat、IplImage之间的转换

    一.Mat类型:矩阵类型,Matrix.  在openCV中,Mat是一个多维的密集数据数组.可以用来处理向量和矩阵.图像.直方图等等常见的多维数据. Mat有3个重要的方法: 1.Mat mat = ...

  7. React Native 学习(三)之 FlexBox 布局

    React Native 学习(三)之 FlexBox 布局

  8. Bullet Physics OpenGL 刚体应用程序模板 Rigid Simulation in Bullet

    利用Bullet物理引擎实现刚体的自由落体模拟的模板 Bullet下载地址 Main.cpp #include <GLUT/glut.h> #include <cstdlib> ...

  9. MySQL 创建自定义函数(1)

    1. 创建测试自定义函数(1) CREATE DEFINER=`dbdh`@`localhost` FUNCTION `test`.`sp_function_dbdh_three`() RETURNS ...

  10. The threads in the thread pool will process the requests on the connections concurrently.

    https://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html Most of the executor implem ...