Numpy. reshape 和 transpose 的顺序
links: numpy.reshape函数中参数order={'A','C','F'},其中的A怎么解释?
1) Transpose通过单个数据的位置来理解,每个元素根据矩阵的索引会有一个位置,转置之后元素的位置会变成新的位置,比如一个元素开始的位置是 (1,5) ,转置之后就是(5,1)了,又或者之前的位置是(1,1,0,6) 转置的参数设置为(1,2,3,0)之后,该元素的位置变为 (1,0,6,1),矩阵整体的shape也会相应变化,假如之前是(2,2,7,7), 转置之后就是(2,7,7,2);
2) Reshape
C 是按照行顺序, F 是按照列顺序,A 就是按照数据在内存中存储的顺序来。
比如:
![7be5a86d3e25e9be2e7e43bad8532d85.png](https://i-blog.csdnimg.cn/blog_migrate/916a7340d48fc77113a3cb10f0559118.png)
更一般的理解,应该是 C 顺序准确的含义是从最里面的轴开始读写,而F顺序则是从最外面的轴开始读写;'C' means to read / write the elements using C-like index order, with the last axisindex changing fastest, back to the first axis index changing slowest.'F' means to read / write the elements using Fortran-like index order,with the first index changing fastest, and the last index changingslowest.
以上面的二维数据 a(3,2) 举例就是,C顺序就是先读写最里面 2 这个轴的数据,也就是得到 0 ,1 ,2,3,4,5 这样的顺序,而F顺序则是从最外层 3 这个轴的数据开始读写,得到 0 2 4 1 3 5,多维数据以此类推。
Numpy 排序
lins:朱卫军:Numpy进阶之排序小技巧
1) numpy.sort
使用方法: numpy.sort(a, axis=-1, kind=None, order=None)
参数:
- a : 要排序的数组;
- axis : 按什么轴进行排序,默认按最后一个轴进行排序;
- kind :排序方法,默认是快速排序;
- order : 当数组定义了字段属性时,可以按照某个属性进行排序;
这个axis意思 不是 对某一个轴进行操作,这一个轴保持不变, 而是操作过后只有这一个轴变化, 这就是为什么axis=0,按照行操作时候,不是对某一行排序,而是对列排序,排序后每个数字的行变化了,列不变化
2)numpy.argsort
函数用于将数组排序后,返回数组元素从小到大依次排序的所有元素索引。
使用方法(和sort类似): numpy.argsort(a, axis=-1, kind=None, order=None)
参数:
- a : 要排序的数组;
- axis : 按什么轴进行排序,默认按最后一个轴进行排序;
- kind :排序方法,默认是快速排序;
- order : 当数组定义了字段属性时,可以按照某个属性进行排序
Numpy random 的用法
links:np.random用法
1)np.random.rand() --> 生成指定维度的的[0,1)范围之间的随机数,输入参数为维度
2)np.random.randn() --> 生成指定维度的服从标准正态分布的随机数,输入参数为维度
3)np.random.randint(low, high = None, size = None,dtype = 'l')--> 返回随机数或者随机数组成的array
4)np.random.random_integers(low,high = None,size = None)-->返回范围为[low,high] 闭区间 随机整数
5)np.random.random(size = (2,2))-->生成随机浮点数阵列
np.random.rand(2,2) 等价于 np.random.random(size = (2,2))
6)np.random.choice(a, size = None, replace = True, p = None)--> 从给定数组a中随机选择,p可以指定a中每个元素被选择的概率
Python中numpy数组的拼接、合并
links:Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
苦逼程序员:Python中numpy数组的拼接、合并
对于两个shape一样的二维array来说:
- 增加行(对行进行拼接)的方法有:
np.concatenate((ar1, ar2),axis=0)
np.append(ar1, ar2, axis=0)
np.vstack((ar1,ar2))
np.row_stack((ar1,ar2))
np.r_[ar1,ar2]
- 增加列(对列进行拼接)的方法有:
np.concatenate((ar1, ar2),axis=1)
np.append(ar1, ar2, axis=1)
np.hstack((ar1,ar2))
np.column_stack((ar1,ar2))
np.c_[ar1,ar2]