Numpy基础入门知识点总结

目录

1、ndarray创建与索引

1.1创建ndarray对象

1.1.1ndarray数据类型

 1.1.2 ndarray创建

1.1.3 ndarray的索引与切片

2.2 ndarray 的基础操作

2.2.1 设置 ndarray的形状

 2.2.2展平ndarray

2.2.3组合 ndarray

2.2.4 分割 ndarray

2.2.5排序

2.2.6搜索

2.2.7字符串操作

2、ufunc

2.1 广播机制

2.2 常用运算

2.2.1 算术运算

2.2.2 三角函数

2.2.3集合运算

2.2.4比较运算

2.2.5逻辑运算

2.2.6统计计算

3、 matrix 与 线性代数

3.1创建NumPy矩阵

3.2矩阵的属性和基本运算


NumPy提供了两种基本的对象:ndarry 和 ufunc。ndarray是一个具有矢量算术运算和复杂广播能力的、快速且节省空间的多维且数组,ufunc则提供了对ndarray进行快速运算的标准数学函数。

1、ndarray创建与索引

1.1创建ndarray对象

在Numpy中,创建ndarray的方法根据创建的ndarray不同,可以有函数array、arange、linspace、logspace、zeros、eye、diag、ones等。此外,Numpy还提供随机数相关函数,,也可以用于创建ndarray。

1.1.1ndarray数据类型

import numpy as np
print(f"整数42转为浮点数结果为:{np.float64(42)}")
print(f"整数42转为布尔值结果为:{np.bool_(42)}")

运行结果:

整数42转为浮点数结果为:42.0
整数42转为布尔值结果为:True

 1.1.2 ndarray创建

创建一维ndarray和二维ndarray

import numpy as np
arr0 = np.array((1, 2, 3, 4, 5))    # 括号内为元组
arr1 = np.array([1, 2, 3, 4])   # 括号内为列表
arr2 = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [8, 9, 10, 11]])
arr4 = np.array(range(10))  # 迭代对象
arr5 = np.array([i ** 2 for i in range(5)])  # 迭代对象
print(f"创建的一维ndarray为:{arr0}")
print(f"创建的一维ndarray为:{arr1}")
print(f"创建的二维ndarray为:\n{arr2}")
print(f"创建的一维ndarray为:{arr4}")
print(f"创建的一维ndarray为:{arr5}")

运行结果: 

创建的一维ndarray为:[1 2 3 4 5]
创建的一维ndarray为:[1 2 3 4]
创建的二维ndarray为:
[[ 1  2  3  4]
 [ 4  5  6  7]
 [ 8  9 10 11]]
创建的一维ndarray为:[0 1 2 3 4 5 6 7 8 9]
创建的一维ndarray为:[ 0  1  4  9 16]

import numpy as np
# 二维数组:嵌套序列(列表,元组均可)
arr0 = np.array([[1, 2, 3], ('a', 'c', 'd')])
print(f"arr0:\n{arr0}")
# 当嵌套序列数目不一样时
arr1 = np.array([[1, 2, 3], ('a', 'c', 'd', 'f')])  # 会有警告
print(f"arr1:\n{arr1}")
print(f"arr1 的ndim:\n{arr1.ndim}")

 运行结果:

arr0:
[['1' '2' '3']
 ['a' 'c' 'd']]
arr1:
[list([1, 2, 3]) ('a', 'c', 'd', 'f')]
arr1 的ndim:
1
import numpy as np
# 设置元素类型
arr0 = np.array([2, 2.4, 3.6, 4.1], dtype='int')
print(f"arr0:{arr0}")

 运行结果:

arr0:[2 2 3 4]

常用的ndarray的常用属性如下表:

import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [8, 9, 10, 11]])
print(f"arr1的轴的个数:{arr1.ndim}")
print(f"arr2的轴的个数:{arr2.ndim}")
print(f"arr1的维度:{arr1.shape}")
print(f"arr2的维度:{arr2.shape}")
print(f"arr1的元素个数:{arr1.size}")
print(f"arr2的元素个数:{arr2.size}")
print(f"arr1的数据类型:{arr1.dtype}")
print(f"arr2的数据类型:{arr2.dtype}")
print(f"arr1的每个元素字节大小:{arr1.itemsize}")
print(f"arr2的每个元素字节大小:{arr2.itemsize}")

运行结果:

arr1的轴的个数:1
arr2的轴的个数:2
arr1的维度:(4,)
arr2的维度:(3, 4)
arr1的元素个数:4
arr2的元素个数:12
arr1的数据类型:int32
arr2的数据类型:int32
arr1的每个元素字节大小:4
arr2的每个元素字节大小:4

 针对一些特殊的ndarray,Numpy提供了其他的ndarray创建函数

ndarray创建函数
函数 说明
arange

创建等差数列(指定开始值、终值和步长)

linspace 创建等差数列(指定开始值、终值(包括)和元素个数)
logspace 创建等比数列
zeros 创建值全为0的矩阵
eye 创建单位矩阵(对角线元素为1,其余为0)
diag 创建对角矩阵(对角线元素为指定值,其余为0)
ones 创建值全部为1的矩阵

arange函数使用部分展示:

import numpy as np
print(f"使用arange函数创建ndarray1为:\n{np.arange(0, 10, 2)}")
print(f"使用arange函数创建ndarray2为:\n{np.arange(10, 1)}")
print(f"使用arange函数创建ndarray3为:\n{np.arange(10, step = 1)}")

运行结果:

使用arange函数创建ndarray1为:
[0 2 4 6 8]
使用arange函数创建ndarray2为:
[]
使用arange函数创建ndarray3为:
[0 1 2 3 4 5 6 7 8 9]

  

import numpy as np
print(f"使用arange函数创建ndarray为:\n{np.arange(0, 1, 0.1)}")
print(f"使用linspace函数创建ndarray为:\n{np.linspace(0, 1, 5)}")
# 下面创建是从1(10的0次方)到100(10的二次方),这10个元素的等比数列
print(f"使用logspace函数创建ndarray为:\n{np.logspace(0, 2, 10)}")
print(f"使用zeros函数创建ndarray为:\n{np.zeros((2, 3))}")
print(f"使用eye函数创建ndarray为:\n{np.eye(3)}")
print(f"使用diag函数创建ndarray为:\n{np.diag([2, 3, 4])}")
print(f"使用ones函数创建ndarray为:\n{np.diag((3, 2))}")

运行结果:

使用arange函数创建ndarray为:
[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
使用linspace函数创建ndarray为:
[0.   0.25 0.5  0.75 1.  ]
使用logspace函数创建ndarray为:
[  1.           1.66810054   2.7825594    4.64158883   7.74263683
  12.91549665  21.5443469   35.93813664  59.94842503 100.        ]
使用zeros函数创建ndarray为:
[[0. 0. 0.]
 [0. 0. 0.]]
使用eye函数创建ndarray为:
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
使用diag函数创建ndarray为:
[[2 0 0]
 [0 3 0]
 [0 0 4]]
使用ones函数创建ndarray为:
[[3 0]
 [0 2]]

 使用随机数创建ndarray,numpy中随机数相关的函数都在random模块中。

numpy.random部分函数

import numpy as np
print(f"使用random函数生成的随机数ndarray为:\n{np.random.random(5)}")
print(f"使用rand函数生成服从均匀分布的随机数ndarray为:\n{np.random.rand(3, 5)}")
print(f"使用randint函数生成给定上下限的随机整数ndarray为:\n{np.random.randint(2, 10,[2, 3])}")

运行结果:

使用random函数生成的随机数ndarray为:
[0.09594888 0.2016682  0.84676803 0.66376245 0.2414957 ]
使用rand函数生成服从均匀分布的随机数ndarray为:
[[0.13673995 0.79574959 0.42616049 0.00760496 0.88965927]
 [0.91864831 0.08410816 0.07618759 0.4229055  0.19356727]
 [0.63578401 0.50782571 0.16605383 0.76282094 0.70902764]]
使用randint函数生成给定上下限的随机整数ndarray为:
[[6 9 5]
 [2 9 7]]

1.1.3 ndarray的索引与切片

 一维 ndarray的索引

import numpy as np
# 默认 np.arange(0, 10, 1)
arr = np.arange(10)
print(f"初始结果为:{arr}")
print(f"使用元素位置索引结果为:{arr[5]}")
print(f"使用元素位置切片结果为:{arr[2:5]}")
print(f"使用元素位置切片结果为:{arr[2:8:2]}")
print(f"省略单个位置切片结果为:{arr[:5]}")
print(f"使用元素反向位置切片结果为:{arr[:-2]}")
# 修改对应下标的值
arr[2:5] = 10, 11, 13
print(f"修改后结果为:{arr}")

运行结果为:

初始结果为:[0 1 2 3 4 5 6 7 8 9]
使用元素位置索引结果为:5
使用元素位置切片结果为:[2 3 4]
使用元素位置切片结果为:[2 4 6]
省略单个位置切片结果为:[0 1 2 3 4]
使用元素反向位置切片结果为:[0 1 2 3 4 5 6 7]
修改后结果为:[ 0  1 10 11 13  5  6  7  8  9]

 多维 ndarray的索引,多维 ndarray的每个维度都有一个索引,各个维度的索引之间用逗号隔开。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(f"初始结果为:\n{arr}")
# 取第二列
print(f"切片结果为:\n{arr[:, 1:2]}")
# 取1、2两行,2、3两列
print(f"切片结果为:\n{arr[0:2, 1:3]}")
# 取 arr中&#x
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值