A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.维度相关

.ndim:维度
.shape :各维度的尺度 (2,5)
.size :元素的个数 10
.itemsize :每个元素的大小,以字节为单位
reshape():改变维度

>>> np.zeros([2,3])array([[ 0.,  0.,  0.],       [ 0.,  0.,  0.]])>>> np.zeros([2,3]).ndim2>>> np.zeros([2,3]).shape(2, 3)>>> np.zeros([2,3]).size6>>> np.zeros([2,3],dtype="float32").itemsize4>>> np.arange(8).reshape(2,4)array([[0, 1, 2, 3],       [4, 5, 6, 7]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

shape的引用

>>> np.ones([2,3]).shape[0]2>>> np.ones([2,3]).shape[1]3
  • 1
  • 2
  • 3
  • 4

[np.newaxis,:]增加一个新维度

>>> np.zeros(5).shape(5,)>>> np.zeros(5)[np.newaxis,:].shape(1, 5)>>> np.zeros(5)[:,np.newaxis].shape(5, 1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
2. 类型相关2.1 入门操作

.dtype :元素的类型 dtype(‘int32’)
.astype : 改变元素类型

>>> np.zeros([2,3]).dtypedtype('float64')>>> np.zeros([2,3],dtype="float32").dtypedtype('float32')>>> np.ones([2,3]).astype(np.int).dtypedtype('int32')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
2.2 结构化数据类型

结构化数据类型类型于c语言中的结构体。

>>> import numpy as np>>> stu_type=np.dtype([('name','S10'),('score','i1')])>>> stu_sco = np.array([('ZhangSan',100),('LiSi',99),('WangErMaZi',98)],dtype = stu_type)>>> stu_scoarray([(b'ZhangSan', 100), (b'LiSi',  99), (b'WangErMaZi',  98)],      dtype=[('name', 'S10'), ('score', 'i1')])>>> stu_sco.shape(3,)>>> stu_sco['name']array([b'ZhangSan', b'LiSi', b'WangErMaZi'], dtype='|S10')>>> stu_sco['score']array([100,  99,  98], dtype=int8)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
3. 矩阵生成相关

np.array():生成矩阵

>>> np.array([[1,2,4],[4,5,6]])array([[1, 2, 4],       [4, 5, 6]])
  • 1
  • 2
  • 3

np.arange(n) ; 元素从0到n-1的ndarray类型
np.linspace(1,10,4): 根据起止数据等间距地生成数组
np.linspace(1,10,4, endpoint = False):endpoint 表示10是否作为生成的元素

>>> np.arange(5)array([0, 1, 2, 3, 4])>>> np.arange(0,1,0.1)array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])>>> np.linspace(0,1,10)array([ 0.        ,  0.11111111,  0.22222222,  0.33333333,  0.44444444,        0.55555556,  0.66666667,  0.77777778,  0.88888889,  1.        ])>>> np.linspace(0,1,11)array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])>>> np.linspace(0,1,10,endpoint=False)array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

下面这几个shape必须输入[]格式
np.ones(shape): 生成全1
np.zeros((shape), ddtype = np.int32) : 生成int32型的全0
np.full(shape, val): 生成全为val
np.eye(n) : 生成单位矩阵

>>> np.full([2,3],4)array([[4, 4, 4],       [4, 4, 4]])>>> np.full([2,3],4,dtype=np.int64)array([[4, 4, 4],       [4, 4, 4]], dtype=int64)>>> np.eye(3)array([[ 1.,  0.,  0.],       [ 0.,  1.,  0.],       [ 0.,  0.,  1.]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

np.ones_like(a) : 按数组a的形状生成全1的数组
np.zeros_like(a): 同理
np.full_like (a, val) : 同理

>>> np.ones_like(a)array([[1, 1, 1],       [1, 1, 1]])>>> np.zeros_like(a)array([[0, 0, 0],       [0, 0, 0]])>>> np.full_like(a,5)array([[5, 5, 5],
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
4. 切片和索引

[起始:终止(不含有):步长]
其余和matlab类似

>>> a=np.array([1,2,3,4,5])>>> a[1:4:2]array([2, 4])>>> a=np.array([[1,2,3],[4,5,6]])>>> a[1,:]array([4, 5, 6])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
5. 计算

np.abs(a) np.fabs(a) : 取各元素的绝对值,前者返回int,后者返回float
np.sqrt(a) : 计算各元素的平方根
np.square(a): 计算各元素的平方
np.log(a) np.log10(a) np.log2(a): 计算各元素的自然对数、10、2为底的对数
np.ceil(a) np.floor(a): 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)
np.rint(a) : 各元素 四舍五入
np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回
np.exp(a): 计算各元素的指数值
np.sign(a): 计算各元素的符号值 1(+),0,-1(-)
np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值
np.minimum(a, b) np.fmin(): 取最小值
np.mod(a, b) : 元素级的模运算
np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素

6.random库

-np.random.rand: [0,1)之间 随机浮点数组
- np.random.randn: 正态分布 浮点数组
-np.random.standard_normal: 标准正态分布

>>> np.random.rand(2,3)array([[ 0.05744458,  0.09174029,  0.79843883],       [ 0.3283518 ,  0.69069531,  0.17128676]])
  • 1
  • 2
  • 3
  • np.random.randint(low, high=None, size=None, dtype='l'):整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。
>>> np.random.randint(3)1>>> np.random.randint(3,5)3>>> np.random.randint(3,size=[2,3])array([[1, 0, 2],       [0, 1, 2]])>>> np.random.randint(3,5,size=[2,3])array([[3, 4, 3],       [4, 3, 4]])>>> np.random.randint(3,size=[2,3]).dtypedtype('int32')

2 个回复

倒序浏览

很不错,受教了
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马