numpy的argsort和sum和tile函数
2016-01-13 20:22
495 查看
在使用这几个函数时遇到一些问题记录一下,个人理解,不一定正确。
问题1: argsort的函数返回值是什么?
比如有语句:
In [40]:
distances
Out[40]:
array([ 1.48660687, 1.41421356, 0. , 0.1 ])
In [41]:
distances.argsort()
Out[41]:
array([2, 3, 1, 0])
很奇怪,进行了排序为什么出现的不是排序后的值,help后发现,argsort其实是返回array排序后的下标(或索引)。
比如上面数组排序后结果应该是:[0. , 0.1 , 1.41421356, 1.48660687].
此时0.的位置在排序后第0位,而0.在原array中是第2位,0.1的在排序后在第1位,在原array中是第3位,依次类推。
因为函数返回的排序后元素在原array中的下标,所以返回了2,3, 1, 0.
问题2: sum函数的axis值代表了什么?
axis决定了sum函数作用的轴值(维度)。
当axis为None时,返回array中所有元素的和。如:
In [40]:
np.sum([[1,2], [2, 3], [4,5]])
Out[40]:
17
当axis为0时,返回array中所有单元所对应值的和的数组(或值)。如:
In [41]:
np.sum([[0, 1, 3], [3, 5, 8], [4, 5, 6]], axis=0)
Out[41]:
array([ 7, 11, 17])
In [42]:
np.sum([1, 2, 3,4 ,6], axis=0)
Out[42]:
16
当axis为1时,返回array中所有单元内部值的和的数组。如:
In [33]:
np.sum([[0, 1], [3, 5], [2, 5]], axis=1)
Out[33]:
array([1, 8, 7])
问题3:tile函数作用是什么?
函数原型是:
tile(A, reps)
Construct an array by repeating A the number of times given by reps.
然而我看了很久的help依然不太懂,借助例子可以稍微理解一些。
当reps为单个值时,返回A中元素*reps倍数的array。如:
In [47]:
tile([1, 2], 2)
Out[47]:
array([1, 2, 1, 2])
解释:2让[1, 2]中元素重复2次,变成[1, 2, 1, 2]
In [48]:
tile([1, 2], 1)
Out[48]:
array([1, 2])
当reps为二元元组(a, b)或者list时,元组中第二个值b是让整个A中所有元素单元变成b倍,第一个值a让元素变成b倍的A变成a个维度。还是看例子吧:
In [70]:
tile([1, 2, 3], (1, 1))
Out[70]:
array([[1, 2, 3]])
In [67]:
tile([1, 2, 3], (1, 2))
Out[67]:
array([[1, 2, 3, 1, 2, 3]])
In [69]:
tile([1, 2, 3], (3, 2))
Out[69]:
array([[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]])
解释:2让[1, 2, 3]变成[1, 2, 3, 1, 2, 3],3让[1, 2, 3, 1, 2, 3]变成最终的结果。
当reps为更高元元组或list时,元组的最后一个值i让整个A中的元素单元变成i倍,设处理后的结果为B,其倒数第二个值j让B中元素单元变成j倍,成C,前面值依次处理上一次处理后的结果,一直到第一个值,最后得到结果。如:
In [83]:
tile([1, 2, 3], (4, 3, 2))
Out[83]:
array([[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]]])
解释:
2让元素元组[1, 2, 3]变成
[1, 2, 3, 1, 2, 3],
3让[1, 2, 3, 1, 2, 3]变成
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
3让
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
变成:
[[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]]]
问题1: argsort的函数返回值是什么?
比如有语句:
In [40]:
distances
Out[40]:
array([ 1.48660687, 1.41421356, 0. , 0.1 ])
In [41]:
distances.argsort()
Out[41]:
array([2, 3, 1, 0])
很奇怪,进行了排序为什么出现的不是排序后的值,help后发现,argsort其实是返回array排序后的下标(或索引)。
比如上面数组排序后结果应该是:[0. , 0.1 , 1.41421356, 1.48660687].
此时0.的位置在排序后第0位,而0.在原array中是第2位,0.1的在排序后在第1位,在原array中是第3位,依次类推。
因为函数返回的排序后元素在原array中的下标,所以返回了2,3, 1, 0.
问题2: sum函数的axis值代表了什么?
axis决定了sum函数作用的轴值(维度)。
当axis为None时,返回array中所有元素的和。如:
In [40]:
np.sum([[1,2], [2, 3], [4,5]])
Out[40]:
17
当axis为0时,返回array中所有单元所对应值的和的数组(或值)。如:
In [41]:
np.sum([[0, 1, 3], [3, 5, 8], [4, 5, 6]], axis=0)
Out[41]:
array([ 7, 11, 17])
In [42]:
np.sum([1, 2, 3,4 ,6], axis=0)
Out[42]:
16
当axis为1时,返回array中所有单元内部值的和的数组。如:
In [33]:
np.sum([[0, 1], [3, 5], [2, 5]], axis=1)
Out[33]:
array([1, 8, 7])
问题3:tile函数作用是什么?
函数原型是:
tile(A, reps)
Construct an array by repeating A the number of times given by reps.
然而我看了很久的help依然不太懂,借助例子可以稍微理解一些。
当reps为单个值时,返回A中元素*reps倍数的array。如:
In [47]:
tile([1, 2], 2)
Out[47]:
array([1, 2, 1, 2])
解释:2让[1, 2]中元素重复2次,变成[1, 2, 1, 2]
In [48]:
tile([1, 2], 1)
Out[48]:
array([1, 2])
当reps为二元元组(a, b)或者list时,元组中第二个值b是让整个A中所有元素单元变成b倍,第一个值a让元素变成b倍的A变成a个维度。还是看例子吧:
In [70]:
tile([1, 2, 3], (1, 1))
Out[70]:
array([[1, 2, 3]])
In [67]:
tile([1, 2, 3], (1, 2))
Out[67]:
array([[1, 2, 3, 1, 2, 3]])
In [69]:
tile([1, 2, 3], (3, 2))
Out[69]:
array([[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]])
解释:2让[1, 2, 3]变成[1, 2, 3, 1, 2, 3],3让[1, 2, 3, 1, 2, 3]变成最终的结果。
当reps为更高元元组或list时,元组的最后一个值i让整个A中的元素单元变成i倍,设处理后的结果为B,其倒数第二个值j让B中元素单元变成j倍,成C,前面值依次处理上一次处理后的结果,一直到第一个值,最后得到结果。如:
In [83]:
tile([1, 2, 3], (4, 3, 2))
Out[83]:
array([[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]]])
解释:
2让元素元组[1, 2, 3]变成
[1, 2, 3, 1, 2, 3],
3让[1, 2, 3, 1, 2, 3]变成
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
3让
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
变成:
[[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]]]
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法