numpy常用技巧
numpy.append(arr, values, axis=None)
数据拼接
注意是两个数据的拼接
当不输入axis参数时,此时默认axis = None,两个array的shape可以不一样。否则会出错。
当输入axis参数时,其所对应axis值的shape被拼在一起,而其他的shape值应当一样。
此时两个array被拼接在了一起。
再来一例子:
可以看到是shape[2](不同部分)被拼接了,但shape[0]和shape[1](相同部分)没变
numpy.concatenate((a1, a2, ...), axis=0, out=None)
和numpy.append其实非常像,不过append只支持两个array的拼接,但concatenate支持多个array的拼接。
参数格式的要求也不太一样,append中前两个参数为输入的array,但concatenate中第一个参数为一个tuple。axis的含义是类似的。
另外concatenate不支持shape完全不同的array进行组合。
直接对一个array进行concatenate也是可以的,这相当于将list转为tuple后输入。
numpy.reshape(a, newshape, order='C')
改变数据的shape
第一个参数为array,第二个参数为新的shape
reshape也可以作为array的成员函数来使用,只有newshape这个参数
newshape中可以有一个dimension写成-1
numpy.clip(a, a_min, a_max, out=None)
取最大最小值
输入数组a,依次对每个数进行最大最小值操作:a[i] = max(a[i], a_max); a[i] = min(a[i], a_min);
numpy.genfromtxt(fname, dtype=<class'float'>, delimiter=None, encoding='bytes', ......)
从文件中读取数据
dtype:数据类型
delimiter:分隔符,默认情况下会以空白符为分隔
会自动按矩阵的形式读入,文件中的一行对应矩阵中的一行
例子一:
例子二:
文件:
读取:
numpy.ndarray.flatten(order='C')
将数据变成一维
numpy.power(x1, x2[, out])
对数组element-wise地取平方
x2可以是数,也可以是和x1shape一样的array
如:
numpy.nonzero(a)
返回array中值为非0元素的下标
如:
注意:这里返回tuple中有两个array,第一个array表示非零元素的第一维,第二个array表示非零元素的第二维,例如[0,0]表示第一个非零元素1的下标
求非0元素的值:
按元素来表示,而不是按维度来表示:
numpy.where(condition[, x, y])
condition为矩阵时,为True用x中的元素,为False用y中的元素(此时condition,x,y三个array的shape相同)
没有condition参数,默认情况下为numpy.nonzero()
如:
condition为矩阵时:
没有condition参数的默认情况:
同样没有condition参数,还可以直接加判断条件用: