numpy函数

numpy函数总结

1、ravel() 和 flatten()

首先声明两者所要实现的功能是一致的(将多维数组降位一维)。这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
两者功能

x=np.array([[1,2],[3,4]])
x.flatten()
#array([1, 2, 3, 4])

x.ravel()
#array([1, 2, 3, 4])

# 传入'F'参数表示列序优先
x.flatten('F')
#array([1, 3, 2, 4])

x.ravel('F')
#array([1, 3, 2, 4])

#reshape函数当参数只有一个-1时表示将数组降为一维
x.reshape(-1)
#array([1, 2, 3, 4])

#x.T表示x的转置
x.T.reshape(-1)
#array([1, 3, 2, 4])

两者区别

x = np.array([[1, 2], [3, 4]])
x.flatten()[1] = 100
x
#array([[1, 2],
#       [3, 4]])

x.ravel()[1] = 100
x
#array([[  1, 100],
#       [  3,   4]])

通过上面的程序可以发现flatten函数返回的是拷贝。

2、查看数据类型dtype()、转换数据类型astype()

arr = np.array([1,2,3,4,5])
arr
#array([1, 2, 3, 4, 5])

#该命令查看数据类型
arr.dtype
#dtype('int64')

float_arr = arr.astype(np.float64)
#该命令查看数据类型
float_arr.dtype
#dtype('float64')
#如果将浮点数转换为整数,则小数部分会被截断
arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.3221])
arr2
#array([ 1.1   ,  2.2   ,  3.3   ,  4.4   ,  5.3221])

#查看当前数据类型
arr2.dtype
#dtype('float64')

#转换数据类型  float -> int
arr2.astype(np.int32)
#array([1, 2, 3, 4, 5], dtype=int32)

numeric_strings = np.array(['1.2','2.3','3.2141'], dtype=np.string_)
numeric_strings
#array(['1.2', '2.3', '3.2141'], dtype='|S6')

#此处写的是float 而不是np.float64, Numpy很聪明,会将python类型映射到等价的dtype上
numeric_strings.astype(float)
#array([ 1.2, 2.3, 3.2141])

你可能感兴趣的:(numpy,numpy)