numpy常见用法

numpy

Copy
import numpy as np shop_price = [30, 20, 15, 40] shop_num = [2, 3, 1, 4]

安装Anacondahttps

快捷键

Copy
向下添加一个单元格, 按esc进入命令行模式, 再按b 向下添加 向下添加一个单元格, 按esc进入命令行模式, 再按a 向上添加 向下添加一个单元格, 按esc进入命令行模式, 再按dd 删除单元格 代码模式转成markdown模式, 按esc进入命令行模式, 按m,转换成markdown shift + enter: 运行当前代码并选中下一个单元格 ctrl + enter: 运行当前代码

一维数组

Copy
>>> np_shop_price = np.array(shop_price) >>> np_shop_price array([30, 20, 15, 40]) >>> np_shop_num = np.array(shop_num) >>> np_shop_num array([2, 3, 1, 4])

数组之间可以进行向量运算

Copy
>>> np_shop_price = np.array(shop_price) >>> np_shop_num = np.array(shop_num) >>> np_shop_price * np_shop_num array([ 60, 60, 15, 160]) >>> np.sum(np_shop_price * np_shop_num) 295

向量运算必须一一运算

python中, 数组就是列表, 列表之间的运算叫向量运算, 2个列表的元素数量必须是一样的,否则就会报错

Copy
>>> a1 = np.array([1,2,3,4]) >>> a2 = np.array([1,2,3]) >>> a1*a2 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-18-d8f7a8f74ee5> in <module> ----> 1 a1*a2 ValueError: operands could not be broadcast together with shapes (4,) (3,)

numpy的基本属性

Copy
>>> a1 = np.array([1,2,3,4]) >>> a1 array([1, 2, 3, 4]) >>> a2 = np.array([[1,2,3,4],[5,6,7,8]]) >>> a2 array([[1, 2, 3, 4], [5, 6, 7, 8]])
  1. 数组元素的数据类型
Copy
>>> a1.dtype dtype('int32')
  1. 数组元素的个数
Copy
>>> a1.size 4 >>> a2.size 8
  1. 数组的维数, 是一维数组还是二维数组
Copy
>>> a1.ndim 1 >>> a2.ndim 2
  1. 数组的维度大小, 以元组的形式表示
Copy
>>> a1.shape (4,) >>> a2.shape (行数,列数) (2, 4)
  1. 数组的转置(将二维数组以上的数组的数据结构的行和列对调)
Copy
>>> a2 array([[1, 2, 3, 4], [5, 6, 7, 8]]) >>> a2.shape (行数,列数) (2, 4) >>> a2.T (列数, 行数) array([[1, 5], [2, 6], [3, 7], [4, 8]])

创建numpy的几种方式

array

将列表转换为数组

  1. 创建整数类型的数组
Copy
>>> a3 = np.array([1,2,3,4]) >>> a3 array([1, 2, 3, 4])
  1. 创建浮点类型的数组
Copy
>>> a3 = np.array([1,2,3,4], dtype='float') >>> a3 array([1., 2., 3., 4.])
  1. 将浮点类型的数组转换为整数类型的数组
Copy
>>> a3.astype('int') 转换数据类型为int array([1, 2, 3, 4])

arrange

和range函数用法一样, 在numpy中使用arrange

  1. 创建0, 1, 2 组成的数组
Copy
>>> np.arange(3) array([0, 1, 2])
  1. 创建3到7之间的数组成的数组, 步长为2
Copy
>>> np.arange(3,7,2) array([3, 5])

linspace

将一定范围内的数根据数组设置的长度平均做除法得到数组内的每个元素, 默认分成50份

  1. 创建2到10之间的数组成的数组, 数组长度为50
Copy
>>> np.linspace(2,10) array([ 2. , 2.16326531, 2.32653061, 2.48979592, 2.65306122, 2.81632653, 2.97959184, 3.14285714, 3.30612245, 3.46938776, 3.63265306, 3.79591837, 3.95918367, 4.12244898, 4.28571429, 4.44897959, 4.6122449 , 4.7755102 , 4.93877551, 5.10204082, 5.26530612, 5.42857143, 5.59183673, 5.75510204, 5.91836735, 6.08163265, 6.24489796, 6.40816327, 6.57142857, 6.73469388, 6.89795918, 7.06122449, 7.2244898 , 7.3877551 , 7.55102041, 7.71428571, 7.87755102, 8.04081633, 8.20408163, 8.36734694, 8.53061224, 8.69387755, 8.85714286, 9.02040816, 9.18367347, 9.34693878, 9.51020408, 9.67346939, 9.83673469, 10. ]) >>> np.linspace(2,10,num=5) array([ 2., 4., 6., 8., 10.])
  1. 创建2到10之间的数, 数组长度为5, 不能包括10
Copy
>>> np.linspace(2,10,num=5,endpoint=False) array([2. , 3.6, 5.2, 6.8, 8.4])

zeros

根据数组的长度创建全部都是0的浮点数的数组

Copy
>>> np.zeros(5) array([0., 0., 0., 0., 0.])

ones

根据数组的长度创建全部都是1的浮点数的数组

Copy
>>> np.ones(5) array([1., 1., 1., 1., 1.])

reshape

将一维数组转换成多维数组

Copy
>>> a4 = np.arange(10) >>> a4 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> a4.reshape(2,5) array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) >>> a4.reshape(5,2) array([[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]]) >>> a4.reshape(3,3) 报错 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-57-88c9cc4a32ac> in <module> ----> 1 a4.reshape(3,3) ValueError: cannot reshape array of size 10 into shape (3,3)

索引和切片

数组和常量之间的运算

Copy
>>> a4 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> a5 = a4*3 >>> a5 array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27]) >>> li = [1, 2, 3, 4] >>> li*3 [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4] >>> a5+3 array([ 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]) >>> a5 array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])

同等大小数组之间的运算

Copy
>>> a7 = np.array([1,2,3,4]) >>> a8 = a5 = np.array([1,2,3,4]) >>> a7*a8 array([ 5, 12, 21, 32])

数组的索引

Copy
>>> a5[2] 6 >>> a6 = a5.reshape(2,5) >>> a6 array([[ 0, 3, 6, 9, 12], [15, 18, 21, 24, 27]]) >>> a6[0,2] 6 >>> a6[0][2] 6

数组的切片

Copy
>>> a5 array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27]) >>> a5[3:6] array([ 9, 12, 15]) >>> a6 array([[ 0, 3, 6, 9, 12], [15, 18, 21, 24, 27]]) >>> a6[:,2:4] array([[ 6, 9], [21, 24]])

布尔型索引

Copy
>>> a5 array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])

获取数组中大于5的数

Copy
>>> a5>5 array([False, False, True, True, True, True, True, True, True, True])

取出所有大于5的偶数

Copy
>>> a5[(a5>5) & (a5%2==0)] >>> array([ 6, 12, 18, 24])

花式索引

Copy
>>> a5 array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])

获取索引是2, 4, 8所对应的具体的值

Copy
>>> a5[[2,4,8]] array([ 6, 12, 24])

通用函数

取绝对值

Copy
>>> np.abs(-2) 2

开根号

Copy
>>> np.sqrt(4) 2.0

向上取值

Copy
>>> np.ceil(3.2) 4.0 np.ceil(3.8) 4.0

四舍五入

Copy
>>> np.rint(3.2) 3.0 >>> np.rint(3.7) 4.0

小数位归0

Copy
>>> np.trunc(1.5) 1.0

将整数和小数分开

Copy
>>> np.modf(12.22) (0.22000000000000064, 12.0) >>> np.modf([0,3.5]) (array([0. , 0.5]), array([0., 3.]))

判断数据是否不是一个数字

Copy
>>> np.isnan(3) False

取2个数组中的最大值组成一个新的数组

Copy
>>> np.maximum([2,3,4],[1,5,2]) array([2, 5, 4])

取平均值

Copy
>>> a5 array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27]) >>> np.mean(a5) 13.5

取方差

((0-13.5)^2+(3-13.5^2)+...+(27-13.5)^2)/10 ===> 方差公式

Copy
>>> a5 array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27]) >>> np.var(a5) 74.25

排序

Copy
>>> np.sort(a5) array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])

随机数生成

  • 生成0到1之间的随机数
Copy
>>> np.random.rand() 0.41127690452609
  • 生成一个三行2列的0到1的随机数的数组
Copy
>>> np.random.rand(3,2) array([[0.25495748, 0.4505048 ], [0.70361618, 0.37524951], [0.19785526, 0.3860836 ]])
  • 生成0到2以内的10个整数的数组
Copy
>>> np.random.randint(2,size=10) array([1, 1, 0, 1, 1, 0, 0, 0, 0, 1])
  • 生成2到5以内的10个整数的数组
Copy
>>> np.random.randint(2,5,size=10) array([2, 4, 4, 2, 4, 4, 3, 4, 2, 3])
  • 生成5以内的3个整数组成的数组
Copy
>>> np.random.choice(5,3) array([4, 2, 4])
  • 给定形状产生随机数组
Copy
>>> np.random.uniform(-1,0,10) array([-1.86027339e-01, -5.65761107e-01, -7.38784743e-01, -9.64964081e-01, -3.88713618e-01, -5.17054693e-01, -5.46899721e-01, -9.90719601e-01, -7.09073463e-04, -5.16624999e-01])
posted @   cjw1219  阅读(2896)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
阅读排行:
· 历时 8 年,我冲上开源榜前 8 了!
· 物流快递公司核心技术能力-海量大数据处理技术
· 四大AI编程工具组合测评
· 关于能否用DeepSeek做危险的事情,DeepSeek本身给出了答案
· 几个技巧,教你去除文章的 AI 味!
点击右上角即可分享
微信分享提示