Numpy介绍

Numpy介绍

使用之前需要导入Numpy

import numpy as np

NumPy 的主要对象是同构多维数组。它是一个元素表(通常是数字),所有类型都相同,由非负整数元组索引。在 NumPy 中,维度称为轴。 例如,3D 空间中一个点的坐标[1, 2, 1]只有一个轴。该轴有 3 个元素,因此我们说它的长度为 3。在下图中的示例中,数组有 2 个轴。第一个轴的长度为 2,第二个轴的长度为 3。

NumPy 的数组类称为ndarray。它也被称为别名 array。请注意,numpy.array这与标准 Python 库类不同array.array,后者仅处理一维数组并提供较少的功能。ndarray对象更重要的属性是:

  • ndarray.ndim 数组的轴数(维度)。
  • ndarray.shape 数组的维度。这是一个整数元组,象征着每个维度中数组的大小。对于具有n行和m列的矩阵,shape将为(n,m)。因此,元组shape的长度是轴的数量,ndim。
  • 数组大小数组的元素总数。这等于shape元素的乘积。
  • ndarray.dtype 描述数组中元素类型的对象。可以使用标准 Python 类型创建或指定 dtype。此外,NumPy 提供了自己的类型。numpy.int32、numpy.int16 和 numpy.float64 是一些示例。
  • ndarray.itemsize 数组每个元素的大小(以字节为单位)。例如,一个类型元素的数组float64有itemsize8 个(=64/8),而一个类型的元素complex32有itemsize4 个(=32/8)。它相当于ndarray.dtype.itemsize。
  • ndarray.data 包含数组实际元素的缓冲区。通常,我们不需要使用此属性,因为我们将使用索引工具访问数组中的元素。

NumPy 数组创建

array创建

可以使用array函数从常规 Python 列表或元组创建数组

a = np.array([1,3,11])
a
array([ 1,  3, 11])
a.shape
(3,)
a.dtype
dtype('int32')
a = np.array([[1.1,2,3],[2,4,8]])
a
array([[1.1, 2. , 3. ],
       [2. , 4. , 8. ]])
a.shape
(2, 3)
a.dtype
dtype('float64')

zeros,ones创建

a = np.zeros((3,8))
a
array([[0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.]])
a = np.ones((2,5))
a
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])
# 指定类型
a = np.ones((4,2),dtype=np.float64)
a.dtype
dtype('float64')

arange创建

np.arange(1,3)
array([1, 2])
np.arange(1,11,3)
array([ 1,  4,  7, 10])
np.array([np.arange(1,5,0.5),np.arange(1,9)])
array([[1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5],
       [1. , 2. , 3. , 4. , 5. , 6. , 7. , 8. ]])

随机数创建

#生成一个 0 到 100 之间的随机整数:
np.random.randint(100)
67
# random 模块的 rand() 方法返回 0 到 1 之间的随机浮点数。
np.random.rand()
0.8036665376544574
np.random.rand(6,3)
array([[0.14565413, 0.67196986, 0.01603824],
       [0.05228213, 0.72782701, 0.47755347],
       [0.62613132, 0.08992243, 0.23964293],
       [0.23977211, 0.46031127, 0.22726328],
       [0.83314693, 0.79064596, 0.24260102],
       [0.73696135, 0.86420688, 0.86527412]])
#randint() 方法接受 size 参数,您可以在其中指定数组的形状。
np.random.randint(30,50,size = (6))
array([48, 47, 32, 33, 37, 48])
np.random.randint(44,51,size = (3,6))
array([[44, 47, 47, 46, 46, 48],
       [45, 44, 48, 49, 45, 50],
       [50, 46, 49, 49, 46, 50]])
#从数组生成随机数
np.random.choice([1,5,7])
7
np.random.choice([1,5,7,11,32],size = (2,3))
array([[ 5, 32,  1],
       [ 1, 11, 11]])

np.random.normal()的意思是一个正态分布,normal这里是正态的意思。
参数loc(float):正态分布的均值,对应着这个分布的中心。loc=0说明这一个以Y轴为对称轴的正态分布,
参数scale(float):正态分布的标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦。
参数size(int 或者整数元组):输出的值赋在shape里,默认为None。

data = np.random.normal(loc=0,scale=1e-2,size=(1,13)) 
data
array([[-0.01127862, -0.00143676, -0.01302496, -0.01239942, -0.0120068 ,
         0.01065305,  0.004626  ,  0.00193842, -0.01895159,  0.01232755,
        -0.00061731, -0.00216356, -0.00426709]])

数组变形reshape

a = np.array([np.arange(1,5,0.5),np.arange(1,9)])
a
array([[1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5],
       [1. , 2. , 3. , 4. , 5. , 6. , 7. , 8. ]])
a.reshape(4,4)
array([[1. , 1.5, 2. , 2.5],
       [3. , 3.5, 4. , 4.5],
       [1. , 2. , 3. , 4. ],
       [5. , 6. , 7. , 8. ]])
a.reshape(2,2,4)
array([[[1. , 1.5, 2. , 2.5],
        [3. , 3.5, 4. , 4.5]],

       [[1. , 2. , 3. , 4. ],
        [5. , 6. , 7. , 8. ]]])

运算

a = np.array([2,3,11])
a
array([ 2,  3, 11])
b = np.arange(1,4)
b
array([1, 2, 3])
a - b
array([1, 1, 8])
# 几次方
a ** 3
array([   8,   27, 1331], dtype=int32)
# sin
np.sin(a)
array([ 0.90929743,  0.14112001, -0.99999021])
# 大小比较
a <3
array([ True, False, False])
#  数组中按元素进行运算
a * b
array([ 2,  6, 33])
# 矩阵乘积
a = np.array([[2,3],[1,5]])
b = np.array([[1,2],[3,3]])
a
array([[2, 3],
       [1, 5]])
b
array([[1, 2],
       [3, 3]])
a @ b
array([[11, 13],
       [16, 17]])
a.dot(b)
array([[11, 13],
       [16, 17]])
#+=操作
a
array([[2, 3],
       [1, 5]])
a+=1
a
array([[4, 5],
       [3, 7]])
# 统计
a.max()
7
a.min()
3
a.sum()
19
np.sort(a)
array([[4, 5],
       [3, 7]])
np.exp(a)
array([[  54.59815003,  148.4131591 ],
       [  20.08553692, 1096.63315843]])
np.add(a,b)
array([[ 5,  7],
       [ 6, 10]])

NumPy 索引、切片和迭代

a = np.array([[1,2,3],[4,6,9]])
a
array([[1, 2, 3],
       [4, 6, 9]])
a[1]
array([4, 6, 9])
a[1][2]
9
a[1][1:3]
array([6, 9])
a[::-1]## reversed a
array([[4, 6, 9],
       [1, 2, 3]])

数组类型和类型之间的转换

Numpy 类型C型描述
numpy.bool_bool存储为字节的布尔值(真或假)
numpy.bytesigned char平台定义
numpy.ubyteunsigned char平台定义
numpy.shortshort平台定义
numpy.ushortunsigned short平台定义
numpy.intcint平台定义
numpy.uintcunsigned int平台定义
numpy.int_long平台定义
numpy.uintunsigned long平台定义
numpy.longlonglong long平台定义
numpy.ulonglongunsigned long long平台定义
numpy.halfnumpy.float16半精度浮点数:符号位,5 位指数,10 位尾数
numpy.singlefloat平台定义的单精度浮点数:通常为符号位、8 位指数、23 位尾数
numpy.doubledouble平台定义的双精度浮点数:通常为符号位、11 位指数、52 位尾数。
numpy.longdoublelong double平台定义的扩展精度浮点数
numpy.csinglefloat complex复数,由两个单精度浮点数表示(实部和虚部)
numpy.cdoubledouble complex复数,由两个双精度浮点数(实部和虚部)表示。
numpy.clongdoublelong double complex复数,由两个扩展精度浮点数(实部和虚部)表示。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<编程路上>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值