栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python初学小知识(十一):NumPy

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python初学小知识(十一):NumPy

Python初学小知识(十一):NumPy
  • 十一、NumPy
    • 1. 多维数组
      • 1.1 创建多维数组
      • 1.2 多维数组的常用属性
    • 2. 多维数组的基本操作
      • 2.1 算术运算
      • 2.2 自身运算
      • 2.3 随机数组
      • 2.4 索引、切片和迭代

十一、NumPy

NumPy是一个高性能的科学计算和数据分析基础包,它具有多维数组对象、线性代数、傅里叶变换和随机数等强大功能。

1. 多维数组 1.1 创建多维数组
import numpy as np  #平时的使用中,习惯将import numpy写成import numpy as np
np.array([1, 2, 3])
array([1, 2, 3])
np.array([[1, 2, 3], [4, 5, 6]])
array([[1, 2, 3],
       [4, 5, 6]])
np.zeros([2, 3]), np.ones([2, 3]), np.ones((2, 3))  #里面的维度使用列表或者元组形式都行
(array([[0., 0., 0.],
        [0., 0., 0.]]),
 array([[1., 1., 1.],
        [1., 1., 1.]]),
 array([[1., 1., 1.],
        [1., 1., 1.]]))
a = np.ones([2, 3])
a[1, 2] = 2
a
array([[1., 1., 1.],
       [1., 1., 2.]])
np.empty([1, 2]), np.empty([2, 3], dtype=int)
(array([[1.76971408e-171, 1.74931728e+009]]),
 array([[-1809049168,         564,           0],
        [          0,           1,     7471207]]))
np.arange(2000)
array([   0,    1,    2, ..., 1997, 1998, 1999])
1.2 多维数组的常用属性
#adim返回维度数量
a = np.array([1, 2])
b = np.array([[1, 2, 3], [4, 5, 6]])
c = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [0, 0, 0]]])
print(a.ndim, b.ndim, c.ndim)  #其实就是有几个中括号
1 2 3
#shape返回维度值
print(c)
print(a.shape, b.shape, c.shape)
[[[1 2 3]
  [4 5 6]]

 [[7 8 9]
  [0 0 0]]]
(2,) (2, 3) (2, 2, 3)
#size返回元素总数量
print(a.size, b.size, c.size)
2 6 12
#dtype返回数据类型
d = np.ones((2, 3))
a.dtype, d.dtype
(dtype('int32'), dtype('float64'))
d = np.ones((2, 3), dtype = int)
e = np.ones((2, 3), dtype = np.int32)
d.dtype, e.dtype  #更改数据类型的写法,如果是改为int32,就有两种,int默认是int32
(dtype('int32'), dtype('int32'))
#itemsize返回字节大小
e.itemsize  #32/8=4
4
2. 多维数组的基本操作 2.1 算术运算
a = np.array([4, 5, 6])
b = np.array([1, 2, 3])
a + b, a - b, a * b, a / b, a % b, a ** b
(array([5, 7, 9]),
 array([3, 3, 3]),
 array([ 4, 10, 18]),
 array([4. , 2.5, 2. ]),
 array([0, 1, 0], dtype=int32),
 array([  4,  25, 216], dtype=int32))
#矩阵运算
a.dot(b), np.dot(a, b)
(32, 32)
#数组直接和标量运算
a + 2, a - 2, a * 2, a / 2, a % 2, a ** 2
(array([6, 7, 8]),
 array([2, 3, 4]),
 array([ 8, 10, 12]),
 array([2. , 2.5, 3. ]),
 array([0, 1, 0], dtype=int32),
 array([16, 25, 36], dtype=int32))
2.2 自身运算
x = np.array([1, 2, 3])
x.min(), x.max(), x.sum()
(1, 3, 6)
#axis=0时,按列计算,保留行
x = np.array([[1, 5, 6], [4, 2, 3]])
print(x.min(), x.min(axis=0), x.min(axis=1))
print(x.max(), x.max(axis=0), x.max(axis=1))
print(x.sum(), x.sum(axis=0), x.sum(axis=1))
1 [1 2 3] [1 2]
6 [4 5 6] [6 4]
21 [5 7 9] [12  9]
#指数运算,平方根运算,二次方运算
x = np.array([1, 2, 3])
np.exp(x), np.sqrt(x), np.square(x)
(array([ 2.71828183,  7.3890561 , 20.08553692]),
 array([1.        , 1.41421356, 1.73205081]),
 array([1, 4, 9], dtype=int32))
2.3 随机数组
np.random.seed(42)  #随机数生成器的随机因子,之后无论运行多少次程序,生成的数据都是一样的

'''生成随机样本数'''
np.random.rand(2, 3)  #[0, 1)范围内,均匀分布
array([[0.37454012, 0.95071431, 0.73199394],
       [0.59865848, 0.15601864, 0.15599452]])
np.random.randn(2, 3)  #均值为0,方差为1的正态分布
array([[ 1.57921282,  0.76743473, -0.46947439],
       [ 0.54256004, -0.46341769, -0.46572975]])
np.random.randint(1, 60)  #生成一个1和60之间的随机整数
25
np.random.binomial(10, 0.6, 100)  #10个样本数,每个样本成功的概率是0.6,测试了100次
#从具有指定参数,n次试验和p个成功概率的二项式分布中抽取样本,其中n个整数> = 0,且p在[0,1]区间内。
#(n可以作为浮点输入,但在使用中会被截断为整数)
array([8, 4, 7, 3, 7, 7, 5, 5, 6, 6, 5, 7, 2, 3, 5, 7, 5, 8, 9, 7, 6, 4,
       5, 5, 6, 7, 7, 3, 9, 4, 6, 6, 5, 6, 4, 4, 6, 7, 6, 4, 7, 6, 6, 5,
       8, 5, 4, 7, 7, 3, 7, 4, 6, 7, 4, 6, 6, 7, 6, 8, 6, 3, 7, 5, 7, 5,
       8, 3, 6, 7, 8, 7, 6, 7, 5, 6, 7, 6, 5, 8, 7, 9, 5, 5, 6, 4, 5, 6,
       4, 7, 8, 7, 8, 6, 4, 9, 8, 6, 4, 7])
np.random.beta(1, 10)  #指定维度且满足beta分布
0.03929334089516656
np.random.normal(1, 10)  #指定维度且满足高斯正态分布
-0.3958962815517375
2.4 索引、切片和迭代
x = np.arange(10)
x, x[:5]
(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), array([0, 1, 2, 3, 4]))
x = np.array([[1,2,3], 
              [4,5,6], 
              [7,8,9]])

x[1], x[0:2, 1:3]#第0行、第1行,第1列、第2列
(array([4, 5, 6]),
 array([[2, 3],
        [5, 6]]))
#针对不同维度进行迭代
for i in x:
    print(i)
[1 2 3]
[4 5 6]
[7 8 9]
for i in x:
    for j in i:
        print(j)
1
2
3
4
5
6
7
8
9
#上面的迭代可以扁平化处理
for i in x.flat:
    print(i)
1
2
3
4
5
6
7
8
9
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580749.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号