前言
最近机器学习中用到numpy,发现里面的很多函数,都不太了解,所以总结一下,以加深理解;
numpy 函数
argsort函数
argsort()函数:将数组中的元素从小到大排列,返回对应的index(索引)数组
import numpy as np
x=np.array([1,5,3,-2,6,8,9])
print(x) ##[ 1 5 3 -2 6 8 9]
print(type(x)) ##<class 'numpy.ndarray'>
y=x.argsort()
pirnt(y) ##[3 0 2 1 4 5 6]
print(type(y))##<class 'numpy.ndarray'>
解析:x数组中-2是最小的,其下标为3,其他同上;
zeros函数
import numpy as np
print(np.zeros((2,3),dtype = np.int32 ))
[[0 0 0]
[0 0 0]]
总结:
zeros函数:返回来一个给定形状和类型的用0填充的数组;
zeros(shape, dtype=float, order=‘C’)
shape:形状
dtype:数据类型,可选参数,默认numpy.float64
order:可选参数,c代表与c语言类似,行优先;F代表列优先
ravel和 flatten函数
首先声明两者所要实现的功能是一致的(将多维数组降位一维),这点类似spark中的flatmap,其中ravel中文意思是散开,解开,flatten中文意思是变平;
##flatten函数
import numpy as np
x =np.array([[2,3],[4,5]])
a = x.flatten()
print(a)
a[1] =100
print(a)
print(x)
[2 3 4 5]
[ 2 100 4 5]
[[2 3]
[4 5]]
##ravel函数
import numpy as np
x =np.array([[2,3],[4,5]])
a = x.ravel()
print(a)
a[1] =100
print(a)
print(x)
[2 3 4 5]
[ 2 100 4 5]
[[ 2 100]
[ 4 5]]
总结:numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响原始矩阵,而numpy.ravel()返回的是视图,会影响原始矩阵;
shape函数
shape是查看数据有多少行多少列
import numpy as np
a = np.array([1,2,3,9,5,6,7,8]) #一维数组
print(a.shape[0]) #值为8,因为有8个数据
print(a.shape)
b = np.array([[1,2,3,9],[5,6,7,8]]) #二维数组
print(b.shape[0]) #值为2,最外层矩阵有2个元素,2个元素还是矩阵。
print(b.shape[1]) #值为4,内层矩阵有4个元素。
print(b.shape)
8
(8,)
2
4
(2, 4)
reshape函数
reshape(1,-1)转化成1行:
reshape(-1,1)转换成1列:
reshape(2,-1)转换成两行:
reshape(-1,2)转化成两列:
reshape(2,4)转化成两行四列:
import numpy as np
x =np.array([[2,3,4,5],[4,5,6,7]])
a = x.reshape(-1,1)
b=x.reshape(1,-1)
c=x.reshape(2,4)
print(a)
print(b)
print(c)
[[2]
[3]
[4]
[5]
[4]
[5]
[6]
[7]]
[[2 3 4 5 4 5 6 7]]
[[2 3 4 5]
[4 5 6 7]]