没有认真的使用过这些函数,你就不知道它们有多重要
------------------------------------------------------------------------
1、信息获取
1.1 Size()函数
1.1.1功能
Size()函数能够获得数组的相关信息
1.1.2调用格式
其调用格式为Result=Size(变量,[/keywords])
2、条件查找
2.1 WHERE()函数
2.1.1功能
WHERE()函数能返回数组中满足指定条件的元素下标
2.1.2调用格式
其调用格式为Result=WHERE(数组表达式,[,count][,complement=变量1][,/L64][,ncomplement=变量2])
Result的值代表的是满足条件的元素的位置(从0开始的位置)
2.1.3范例
PRO get_position
a=[[2,6,6],[3,15,2],[5,10,2],[3,9,4]]
print,a
; Where()可以返回满足条件的元素的下标
result=Where(a EQ 15,count,complement=res_c,ncomplement=res_n)
print,result;比如数组中15对应的下标为4
print,count;满足条件元素的个数
print,res_c;不满足条件元素的位置
print,res_n;不满足条件元素的个数
print,a[result];用于检查where()函数的结果是否正确
END
3、调整大小
3.3 Reform()函数
3.3.1功能
可以在不改变数组元素个数的前提下改变数组的维数
3.3.2调用格式
其调用格式为Result=Reform(Array,D1 [,...,D8][,关键字])
IDL> arr=indgen(10,10,10)
IDL> print,arr
……省略中间8个数组
3.4 Rebin()函数
3.4.1功能
可以修改数组大小,修改后数组的行数或列数必须是原数组行数或列数的整数倍
默认抽样算法是双线性内插
问题:什么是双线性内插??
3.4.2调用格式
其调用格式为Result=Rebin(数组,D1 [,...,D8][,Sample])
其中,Sampe为使用最邻近值抽样算法
- 双线性内插的结果如下
- 最邻近内插的结果如下
3.5 Congrid()函数
3.5.1功能
可以将数组调为同维任意大小
3.5.2调用格式
其调用格式为Result=Congrid(数组,x,y,z [关键字])
其中,Sampe为使用最邻近值抽样算法
例子如下:
3.6 Interpolate()函数
3.6.1功能
可以将数组调为同维任意大小,【并支持任意定位差值】
后面的部分是有别于Congrid函数的部分
3.6.2调用格式
其调用格式为Result=Congrid(数组,x [,y [,z] ] [关键字])
其中,x [,y [,z] ]
为待调整数组下标索引,可以是单个变量或数组。
例子如下:
- 结束
4、数组反转
4.1 Reverse()函数
4.1.1功能
可以对数组进行反转
4.1.2调用格式
其调用格式为Result=Reverse(数组,index [,/overwrite])
其中,index
数组的维数索引
例子如下:
5、数组转置
5.1 Transpose()函数
5.1.1功能
可以对数组进行转置
5.1.2调用格式
其调用格式为Result=Transpose(数组,[P])
其中,关键字P
为数组需要调整的数组列表,如果不设置,则完全反转
例子如下:
其列数没变,但是数组的行变为4行,共有3个这样的数组
具体的操作为:取原数组的第一行为新数组的第一个数组,依次类推,共生成了3个数组
6、数组旋转
6.1 Rotate()函数
6.1.1功能
可以以90°的倍数对数组进行旋转
6.1.2调用格式
其调用格式为Result=Rotate(数组,Direction)
6.2 Rot()函数
6.2.1功能
可以以任意角度对图像进行旋转,同时能进行方法和缩小控制
6.2.2调用格式
其调用格式为Result=Rot(数组,Angle,[Mag,X0,Y0],[关键字])
7、数组平移
7.1 Shift()函数
7.1.1功能
可以基于指定平移量S1……Sn对数组进行第1……n维平移,其中,Si为正表示向前平移,Si为负表示向后平移
7.1.2调用格式
其调用格式为Result=Shift(数组,S1…Sn)
其运行结果如下:
8、数组排序
8.1 Sort()函数
8.1.1功能
实现该数组的排序功能,返回结果是排序后数组的下标索引
8.1.2调用格式
其调用格式为Result=Sort(数组,[/L64])
其运行结果如下:
9、求不同值
9.1 Uniq()函数
9.1.1功能
返回数组中相邻元素不同值的索引
9.1.2调用格式
其调用格式为Result=Uniq(数组 [,索引])
具体内容待用到补充
10、判断数组
10.1 Array_Equal()函数
10.1.1功能
用来判断两个数组是否完全相同
10.1.2调用格式
其调用格式为Result=Array_Equal(数组,/关键字)
Result返回值为0或1,关键字No_TypeConv
用于将两数组转换为同一类型判断数据元素是否相同,为1时可以直接比较
11、求元素个数
11.1 N_Elements()函数
11.1.1功能
用来计算数组元素个数
11.1.2调用格式
其调用格式为Result=N_Elements(数组)
补充:
The INTARR function returns an integer vector or array
I = INTARR(3, 3)
Create I, a 3-element by 3-element integer array with each element set to 0 by entering
12、求最大值
12.1 Max()函数
12.1.1功能
用来计算数组元素元素中的最大值
12.1.2调用格式
其调用格式为Result=Max(数组 [,关键字],min=变量1)
13、求最小值
13.1 Min()函数
13.1.1功能
用来计算数组元素元素中的最大值
13.1.2调用格式
其调用格式为Result=Min(数组 [,关键字],min=变量1)
与Max()
函数类似
14、求和
14.1 Total()函数
14.1.1功能
用来计算数组中所有元素或者部分元素的和
14.1.2调用格式
其调用格式为Result=Total(数组,Dimension,[,关键字])
与Dimension
为求和元素的行列控制
- 可以计算数组总和
- 可以累积求和(
/cumulative
) - 可以按行求和
- 可以按列求和
15、乘积计算
15.1 Product()函数
15.1.1功能
用来计算数组中所有元素或者部分元素的乘积
15.1.2调用格式
其调用格式为Result=Product(数组,Dimension,[,关键字])
Product和Total的函数基本一致
16、阶乘计算
16.1 Factorial()函数
16.1.1功能
用来计算N的阶乘
16.1.2调用格式
其调用格式为Result=Factorial(数组,[,关键字])
17、平均值计算
17.1 Mean()函数
17.1.1功能
用来计算数组元素的平均值
17.1.2调用格式
其调用格式为Result=Mean(数组,[,关键字])
18、方差计算
18.1 Variance()函数
18.1.1功能
用来计算数组元素的方差
18.1.2调用格式
其调用格式为Result=Variance(数组,[,关键字])
19、标准差计算
19.1 Stddev()函数
19.1.1功能
用来计算数组元素的方差
19.1.2调用格式
其调用格式为Result=Stddev(数组,[,关键字])
20、平均值、方差、倾斜度及频率曲线峰态计算
20.1 Moment()函数
20.1.1功能
用来计算数组元素的平均值、方差、倾斜度及频率曲线峰态计算
20.1.2调用格式
其调用格式为Result=Moment(数组,[,关键字])
倾斜度及频率曲线峰态
这两个概念不清楚
21、矩阵运算
矩阵和数组最大的区别
矩阵的元素是数,而数组的元素还可以是字符或其他类型
因此,矩阵可以算是数组的子集