一、基本数据类型
请参见这篇博文 基本数据类型介绍
bool_ Boolean (True or False) stored as a byte
int_ Default integer type (same as C long; normally either int64 or int32)
intc Identical to C int (normally int32 or int64)
intp Integer used for indexing (same as C ssize_t; normally either int32 or int64)
int8 Byte (-128 to 127)
int16 Integer (-32768 to 32767)
int32 Integer (-2147483648 to 2147483647)
int64 Integer (-9223372036854775808 to 9223372036854775807)
uint8 Unsigned integer (0 to 255)
uint16 Unsigned integer (0 to 65535)
uint32 Unsigned integer (0 to 4294967295)
uint64 Unsigned integer (0 to 18446744073709551615)
float_ Shorthand for float64.
float16 Half precision float: sign bit, 5 bits exponent, 10 bits mantissa
float32 Single precision float: sign bit, 8 bits exponent, 23 bits mantissa
float64 Double precision float: sign bit, 11 bits exponent, 52 bits mantissa
complex_ Shorthand for complex128.
complex64 Complex number, represented by two 32-bit floats (real and imaginary components)
complex128 Complex number, represented by two 64-bit floats (real and imaginary components)
进行数据类型转换,如下所示:
import numpy as np
a = np.float(1)
print(type(a)) # <class 'float'>
a = np.int(a)
print(type(a)) #<class 'int'>
二、基本的数据结构类型
ndarray(多维数组类型):
创建方法: a = np.array([1,2,3]) # type(a) 输出结果是 < class 'numpy.ndarray' >,查看的是数据结构的类型
注意:经常容易搞混array和ndarray,其实,前者只是一个函数,而后者是一个类型。通过函数array可以构建一个ndarray类型。 切记! array并不是一个类型,不能误以为是数组类型。
常用的数组可以直接调用的方法和属性:
import numpy as np
a = np.array([[[1],[1]]])
a.shape # 查看数组维度信息
a.size # 求数组中元素总个数
a.dtype # 查看的是数据结构中所存贮的数据的基本类型,例如 'int32'
a.sum(axis=0) # 指定的维度上求和
a.max(axis=0) # 指定维度求最大值,同样也有min()
a.mean(axis=0) # 指定维度求均值
a.argmax(axis=0) # 指定维度上求最大值所对应的索引序号,也有argmin()
a.flatten() # 展开为一维数组
a.T # 转置
a.reshape((1,2)) # 转换形状,注意只是形状发生变化,元素总数是不能变得
a.astype(np.float) # 转换数据类型
# 其次,在两个维度一致的数组间,可进行加减乘除运算,是对应元素进行运算
b = np.array([[1,2],[3,4]])
c = np.array([[3,4],[5,6]])
print(b+c) #[[4,6],[8,10]]
print(b*c) #[[3,8],[15,24]]
#乘方计算
print(b ** 2) #[[1,4],[9,16]]
print(b ** c) #[[1,16],[243,4096]]
#注意,上面的四则运算及乘方运算均没有改变维度
#当两个维度不一致的数组进行运算时,广播机制可以允许一些情况下进行上述运算
#保证必须要能对应上
d = np.array([1,2]) # 此时 b和d 上述运算都可以进行,分别两两对应进行
d = np.array([1]) # 此时也可以
d = np.array([1,2,3]) # 此时就不能再进行运算了
常用的操作数组的方法:
import numpy as np
b = np.array([[1,2],[3,4]])
c = np.array([[3,4],[5,6]])
print(np.dot(b,c)) # [[13,16],[29,36]] 实现的是矩阵的乘法,必须保证维度信息对应正确
np.dot([1,2],[3,4]) # 11 当参数是一维,或者其他维都是1的时候(比如维度是 1X1X2),可以进行运算
np.sum(b) # 10 求和,当不指定维度信息时全部求和。 可以通过axis参数设定求哪一个维度的
np.mean(b) # 与上同理
np.std() # 标准差
np.transpose(b) # 转置
np.trace(b) # 求迹
np自身常用方法:
import numpy as np
np.abs(a)
np.sin(a) #注意参数a应转成弧度值
np.arctanh(a)
np.exp(a)
np.power(a,b) #a**b
np.e
np.pi
np.sqrt(a)
np.sum(a)
np.mean(a)
np.std(a) #标准差
np.transpose(a) #转置
np.vstack((a,b)) #沿纵轴拼接
np.hstack((a,b)) #沿横轴拼接
np.concatenate((a,b))
np.concatenate((a,b),axis = -1) #拼接操作,依次对应于上面的两个
np.stack((a,b)) # 不是拼接,是直接增加一个新的维度。比如原来都是二维,现在变成三维
np.arange(9) #生成 0——8 包含9个元素的数组
np.split(a,3) #将数组a分成三份
np.ravel(c) # 展开为一维数组
np.ones((3,3),dtype = np.float) #生成float型的3X3的纯一数组
np.zeros((3,3),dtype = np.uint8)
np.linspace(0,6,5) #等差数列,0到6之间取5个数,包括0和6端点值
np.load()
np.save()
np.rot90(a,3) #将u逆时针旋转90度,旋转3次
np.roll()
三、线性代数模块——linalg
常用方法:
import numpy as np
np.linalg.norm(a) # 二范数
np.linalg.det(a) # 行列式
np.linalg.matrix_rank(a) # 求矩阵的秩
np.linalg.inv(a) # 求矩阵的逆
u,v = np.linalg.eig(a) # 求特征值和特征向量
u,v = np.linalg.eigh(a) # 同上,只是输出的值的顺序相反
U,s,V = np.linalg.svd(a) # svd 分解
四、随机模块——random
常用方法:
import numpy as np
import numpy.random as random
random.rand(1, 3) # 产生一个1x3数组,值为[0,1)之间的浮点型随机数
random.randn(2,4) # 产生一个2X4数组,符合标准正态分布,均值为0,方差为一
random.random() # 产生一个[0,1)之间的浮点型随机数,只产生一个数
#下面四个均是按照指定大小产生[0,1)之间的浮点型随机数array
random.random((3, 3))
random.sample((3, 3))
random.random_sample((3, 3))
random.ranf((3, 3))
# 产生10个[1,6)之间的浮点型随机数
5*random.random(10) + 1
random.uniform(1, 6, 10)
# 产生10个[1,6)之间的整型随机数
random.randint(1, 6, 10)
# 产生5X2的标准正态分布样本
random.normal(size=(5, 2))
# 产生5个,n=5,p=0.5的二项分布样本
random.binomial(n=5, p=0.5, size=5)
a = np.arange(10)
random.choice(a, 7) # 从a中有回放的随机采样7个
random.choice(a, 7, replace=False) # 从a中无回放的随机采样7个
b = random.permutation(a) # 对a进行乱序并返回一个新的array
random.shuffle(a) # 对a进行in-place乱序
# 生成一个长度为9的随机bytes序列并作为str返回
# '\x96\x9d\xd1?\xe6\x18\xbb\x9a\xec'
random.bytes(9)
备注:以上二到四部分参考了这篇文章: numpy使用