Numpy学习笔记1 Numpy基础

数据分析 Numpy学习笔记


前言

本文主要用于记录学习过程


一、Numpy是什么?

umPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

一个强大的N维数组对象 ndarray
广播功能函数
整合 C/C++/Fortran 代码的工具
线性代数、傅里叶变换、随机数生成等功能

https://www.runoob.com/numpy/numpy-tutorial.html
https://numpy.org/doc/stable/reference/

二、数组

引入库

代码如下(示例):

import numpy as np

1.0 数组 —— 一维数组

代码如下(示例):

new_list = [1,2,3,4] #创建列表

# 列表转一维数组
arr1 = np.array(new_list)
print(arr1)

输出为[1 2 3 4]


2.0 数组-多维数组

arr2 = np.random.rand(2,3,4)
print(arr2)
# 随机创建一个多维数组

输出为
[[[0.38992875 0.02195214 0.42325302 0.005813 ]
[0.05894209 0.57426682 0.53814404 0.76736345]
[0.78839769 0.73995229 0.3539166 0.6145271 ]]

[[0.31695768 0.7647416 0.92064879 0.64272015]
[0.79599819 0.29100795 0.60988874 0.40376486]
[0.12080043 0.39559972 0.84150043 0.84031346]]]
random为默认在0-1之间的随机数,(2,3,4)为2个数组,每个数组3行4列


3.0 创建数组的方式

3.1 随机抽样创建

3.1.1 rand
np.random.rand(3,3)


#数据范围是[0,1),随机抽样,生成的浮点数类型
array([[0.18316068, 0.87911656, 0.1865352 ],
[0.3745942 , 0.98811234, 0.31233841],
[0.90891161, 0.94757692, 0.29876727]])

3.1.2 uniform

np.random.uniform(0,10,3)
np.random.uniform(0,10,(3,3))
np.random.uniform(0,10,(3,))

#size如果指定一个整形,说明生成的是一个固定个数的一维数组
#size如果是一个元组,那么生成的就是一个指定维度大小的多维数组
#默认如果没有指定范围,生成的是0-1之间的浮点数

输出为 array([8.84192238, 9.03461695, 8.79100729])


3.1.3 randint
np.random.randint(1,10,(3,3))
# low指定,high不指定,默认创建的是[0,low)之间的整数
# size如果也不指定,生成的是一个整数

输出为array
([[6, 9, 9],
[3, 1, 5],
[3, 7, 2]])


3.2 序列创建

3.2.1 Array
np.array(range(100))

输出为
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])

list2 = [
    [1,2,3],
    [3,4,5],
    [1,6,7,9]
]
arr3 = np.array(list2)
print(arr3)

[list([1, 2, 3]) list([3, 4, 5]) list([1, 6, 7, 9])]


arr5 = np.array({1,2,3,3,3,4,5})
print(arr5)
print(type(arr5))
# 注意点:使用列表来进行转换

{1, 2, 3, 4, 5}
<class ‘numpy.ndarray’>


3.2.2 arange
arr6 = np.arange(0,100,2)
print(arr6)
[ 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98]
3.2.3 zeros
arr7 = np.zeros((3,3))
print(arr7)

[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]


3.2.4 ones
arr8 = np.ones((3,3))
print(arr8)
print(arr8.dtype)

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
float64


4.0 调整顺序

4.1 调整形状

arr9 = np.random.randint(0,15,15)
print(arr9)
arr9 = np.random.randint(0,15,15)
print(arr9)

[ 1 0 2 8 0 9 14 12 11 12 14 2 0 1 6]


arr10 = arr9.reshape((3,5))
arr11 = arr9.reshape((5,3))
print(arr10)
print(arr11)
print(arr9)

[[ 1 0 2 8 0]
[ 9 14 12 11 12]
[14 2 0 1 6]]
[[ 1 0 2]
[ 8 0 9]
[14 12 11]
[12 14 2]
[ 0 1 6]]
[ 1 0 2 8 0 9 14 12 11 12 14 2 0 1 6]

# reshape在进行转化的过程中,需要注意个数,返回的是新数组不影响原始数据

4.2 shuffle

np.random.shuffle(arr6)
print(arr6)

[56 14 24 78 18 82 40 74 76 88 60 6 2 12 8 84 26 96 86 46 30 94 68 0
90 58 50 34 72 54 44 4 62 66 98 22 20 92 36 70 42 10 80 48 38 32 52 16
64 28]

# shuffle打乱出事的数组顺序,并且修改了原始数组

4.3 permutation

arr7 = np.random.permutation(arr6)
print(arr7)
print(arr6)

[14 8 58 30 32 82 70 60 68 12 24 84 64 92 50 80 48 36 44 22 10 88 96 28
16 40 76 34 90 18 74 72 42 98 54 2 78 66 0 38 94 86 6 4 56 26 46 62
20 52]
[56 14 24 78 18 82 40 74 76 88 60 6 2 12 8 84 26 96 86 46 30 94 68 0
90 58 50 34 72 54 44 4 62 66 98 22 20 92 36 70 42 10 80 48 38 32 52 16
64 28]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值