numpy常见用法

目录

一、numpy数组的创建

1.1 手动创建

1.2 调用numpy函数创建

1.3 创建连续数组

二、numpy数据类型以及本身操作

2.1 numpy的数据类型及转换

2.2 numpy数组的shape即转换

三、取numpy数组中的值

3.1 切片索引

3.2 布尔索引

3.3 花式索引

四、numpy数组的计算

4.1 numpy数组本身的计算

4.2 与其他numpy数组的计算

五、numpy数据的保存与加载

参考文献


 

numpy的基本对象为ndarray,即n-dimensional array object,它是存储单一数据类型的多维数组

一、numpy数组的创建

1.1 手动创建

a = np.array([[1,2,3,4],[5,6,7,8]])

b = np.array(list((1,2,3,4,5,6,7,8,9)))

1.2 调用numpy函数创建

# 创建2行3列的全一矩阵
c = np.ones((2,3))

# 创建2行3列的全0矩阵
d = np.zeros((2,3))

# 创建4行4列的单位矩阵
e = np.eye(4)

                                                            

还有产生随机数的一系列方法都在np.random里面

                                   

1.3 创建连续数组

# 类似于list,起始位置为1,结束位置为10,步长为2
f = np.arange(1,10,2)

# 起始位置为1,结束位置为10,创建20个数据,数据是等差数列
g = np.linspace(1,10,20)

# 起始位置为1,结束位置为10,创建20个数据,数据为等比数列、
h = np.logspace(1,10,20)

                           

二、numpy数据类型以及本身操作

2.1 numpy的数据类型及转换

numpy数组创建的时候,可以通过dtype制定数据类型,numpy常见的数据类型如下:

                                                            

# 创建数组的时候制定数据类型为int32
a = np.eye(5,dtype=np.int32)

# 查看数据类型,结果为dtype('int32')
a.dtype

# 转化数据类型,转化成np.float32
a.astype(np.float32)

2.2 numpy数组的shape即转换

# 创建大小为(4,4)的数组
a = np.eye(4,dtype=np.int32)

# 显示a的shape,为(4,4)
a.shape

# 将a数组转化成(2,8)列的数组
a.reshape((2,8))

输出结果为:

       

三、取numpy数组中的值

3.1 切片索引

切片索引是源数据的视图,对切片进行修改,也会影响到源数据

a = np.arange(10)

a_slice = a[3:9]

#a_slice输出结果为array([3, 4, 5, 6, 7, 8])

# 将索引的0个元素赋值为12345,则a的相应的值也会发生改变
a_slice[0] = 12345

# 输出a的值为
array([    0,     1,     2, 12345,     4,     5,     6,     7,     8,     9])

更为复杂的切片索引

arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# arr2d为
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

# 取前两行,后两列的数据
arr2d[:2,1:]

# 取第二列的数据
arr2d[:,1]

3.2 布尔索引

通过布尔值来取相应的数据

# names为7个人名,分别对应data1的7行
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)


# data数据如下
array([[ 0.41913264, -0.60298782, -0.33671674,  0.90943554],
       [-0.80005614,  0.0440845 , -0.39836774,  0.70296011],
       [-0.71155559, -1.55516028,  0.94330681, -1.16287966],
       [ 0.71886886, -0.44805654,  0.20305883, -1.40290861],
       [-0.55253099,  0.40979184,  0.38371407,  0.32289946],
       [ 1.84004387,  0.35889294,  0.20075337, -1.07528119],
       [ 0.35663761, -0.80927168, -1.57235542, -1.26338198]])

# 取Bob所对应的行
data[names == 'Bob']

结果:
array([[ 0.41913264, -0.60298782, -0.33671674,  0.90943554],
       [ 0.71886886, -0.44805654,  0.20305883, -1.40290861]])

3.3 花式索引

利用整数数组来进行取值,想取那行就把那行的索引放在数组里

arr = np.ones((8, 4))
for i in range(8):
    arr[i] = i 

# arr数据
array([[0., 0., 0., 0.],
       [1., 1., 1., 1.],
       [2., 2., 2., 2.],
       [3., 3., 3., 3.],
       [4., 4., 4., 4.],
       [5., 5., 5., 5.],
       [6., 6., 6., 6.],
       [7., 7., 7., 7.]])


# 现在想取1,3,5,7行
arr[[1,3,5,7]]

结果:
array([[1., 1., 1., 1.],
       [3., 3., 3., 3.],
       [5., 5., 5., 5.],
       [7., 7., 7., 7.]])

四、numpy数组的计算

4.1 numpy数组本身的计算

# 通过numpy数组对进行一些统计计算,如:numpy数组求和,求平均等等

# 生成3行2列的随机数组
arr = np.random.randn(3,2)

array([[-0.17504348,  1.07181866],
       [ 0.98881592, -0.18443573],
       [ 0.07177932, -1.13940987]])

# 对arr数组求均值
arr.mean()
结果:
0.10558747189372959

# 对arr数组求和
arr.sum()
结果:
0.6335248313623776

# 对arr数组列求和
arr.sum(axis=0)
结果:
array([ 0.88555177, -0.25202694])

# 对arr数组行求和
arr.sum(axis=1)
结果:
array([ 0.89677519,  0.80438019, -1.06763054])
# 对numpy数组进行一些数学运算,例如求指数,求平方
# 这些在numpy里叫ufunc即 universal function,对数组内每个元素进行操作的函数

arr = np.random.randn(6)

# 对arr求绝对值
np.abs(arr)

结果:
array([1.02469848, 0.84606635, 0.43296449, 0.86053481, 0.10749375, 1.49358338])


# 对arr求cos
np.cos(arr)

结果:
array([0.51935658, 0.6629333 , 0.90772595, 0.65203207, 0.99422811, 0.07713625])

4.2 与其他numpy数组的计算

# numpy与其他数组的计算,主要包括加、减、乘、除,求逆等等

# 常用的操作为矩阵相乘
a = np.array([[1,2],[3,4]])
b = np.array([[1,1],[2,2]])

a                               
array([[1, 2],                  
       [3, 4]])

b
array([[1, 1],
       [2, 2]])

# 矩阵相乘为np.dot(),py3.5以后也可以用@
np.dot(a,b) 或者 a@b
结果都一样,如下:
array([[ 5,  5],
       [11, 11]])


# 矩阵对应元素与元素相乘
np.multiply(a,b)

结果:
array([[1, 2],
       [6, 8]])

五、numpy数据的保存与加载

# numpy数据的保存
arr = np.arange(10)
np.save('test',arr)

# numpy数据的加载
b = np.load('test.npy')

参考文献

简书:<利用python进行数据分析-第二版>

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NumPy是Python中最常用的科学计算库之一,提供了丰富的数组操作和数学函数,广泛应用于数据分析、机器学习、图像处理等领域。下面列举了NumPy常见用法: 1. 创建数组:使用`np.array()`函数或其他创建数组的函数(如`np.zeros()`、`np.ones()`等)创建数组。 2. 数组操作:包括索引、切片、拼接、重塑、转置等操作,可以使用数组的各种方法实现。 3. 数组计算:包括加、减、乘、除、求和、平均数、标准差、最大值、最小值等计算,可以使用数组的各种方法实现,也可以使用NumPy提供的数学函数实现。 4. 矩阵计算:NumPy提供了矩阵乘法、逆矩阵、行列式等矩阵计算功能,可以使用`np.dot()`、`np.linalg.inv()`、`np.linalg.det()`等函数实现。 5. 随机数生成:NumPy提供了多种概率分布的随机数生成函数,如正态分布、均匀分布、泊松分布等,可以使用`np.random`子模块中的函数实现。 6. 文件读写:NumPy可以读写多种格式的文件,如文本文件、二进制文件、CSV文件等,可以使用`np.loadtxt()`、`np.savetxt()`、`np.load()`、`np.save()`等函数实现。 7. 数组广播:NumPy支持不同形状的数组之间的运算,通过广播机制,自动扩展数组的形状,使得运算能够进行。 8. 数组迭代:可以使用`np.nditer()`函数对多维数组进行迭代,实现对数组元素的遍历操作。 9. 数组拷贝:NumPy中的数组是可变对象,可以使用`np.copy()`函数进行深拷贝或浅拷贝,避免在修改数组时对原数组产生影响。 以上是NumPy常见用法,每个用法都有其具体的实现方式,掌握这些用法可以让我们更高效地使用NumPy完成各种数学和科学计算任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值