当前位置:网站首页>Numpy基本使用
Numpy基本使用
2022-06-26 13:57:00 【m0_52339560】
Numpy入门
对于Python的列表,其并不是真正意义上的数组。数据量很大时,列表效率不高(即速度很慢)。
Numpy提供两种基本对象,ndarray和ufunc。
ndarray(后面统称为数组),存储单一数据类型的多维数组。
ufunc(通用函数),对数组进行处理的函数
1. 数组的创建
array():向该函数传入一个列表或元组,即可构造简单一位数组,如果传入嵌套列表或嵌套元组,则构造二维数组。
a = np.array([2, 4, 6, 8, 10]) #生成一维数组
b = np.array([1, 2, 3], [2, 3, 4]) #生成二维数组
arange(),empty(),linspace()
- empty():创建一个指定形状(shape),数据类型(dtype)且未初始化的数组。
#函数原型 #numpy.empty(shape, dtype=float, order='C') a = np.empty((2,3), int) #创建2行,3列的空矩阵
- arange():返回给定间隔均匀分布的值构成的数组。
#函数原型,有省略一些不常用的参数 #numpy.arange([start, ]stop, [step, ]dtype=None) a = np.arange(0, 10, 4, dtype=int) #生成[0,4,8] #起始值为0,步长为4,取值区间为[start, stop),注意“左闭右开” #start可省略,默认起始值为0,默认步长为1
- linspace():返回指定间隔内间隔均匀的数字。
#函数原型,省略一些不常用的参数 #numpy.linspace(start, stop, num=50) a = np.linspace(0, 100, 20) #从区间[start, stop]中均匀取20个点,构成一个数组,这里为闭区间其他生成数组的方法省略。
2. 数组的属性
使用numpy生成的数组都是一个数组对象。该对象有一些基本属性。
ndim:数组的维数(int)
shape:数组的尺寸,对于m行n列矩阵,返回为(m,n)元组
size: 数组元素总个数
dtype: 数组中元素的数据类型
itemsize:数组中元素的字节数
使用示例:
a = np.array([2, 3, 4, 5])
print("维数:", a.ndim) # 维数:1
shape属性
使用示例:
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3]])
c = np.array([[1], [2], [3]])
print("维度为:", a.shape) #维度为:(3,)
print("维度为:", b.shape) #维度为:(1,3)
print("维度为:", c.shape) #维度为:(3,1)
注意shape属性(3,)、(1,3)、(3,1)是不一样的,(3,)代表的一维数组即可以看成是行向量,也可以看成是列向量,它的转置是不变的。
3. 数组元素的访问(索引方式)
- 一般索引
使用示例:
#一维数组的索引方式
a = np.arange(0,10)
print(a[7]) #访问下标为7的元素,结果为7
#二维数组的索引方式
a = np.array([[1, 2, 3], [ 5, 6 ,7]])
print(a[1,2]) #访问第2行,第3列的元素,结果为7
- 布尔索引
使用示例:布尔索引会将满足结果的元素合并为一个一维数组
a = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
print(a[a>3]) #提取出数组a中大于3的元素
#结果为:[4 4 5]
- 花式索引:略
4. 数组的修改
- 通过索引访问修改
使用示例:
a = np.arange(0,10)
a[7] = 0 #修改下标为7的元素值为0
#二维数组同理
- 通过函数修改
使用示例:
x = np.array([[1, 2], [3, 4], [5, 6]])
y = np.delete(x, 2, axis=0) #删除数组的第3行
z = np.delete(x, 0, axis=1) #删除数组的第1列
t1 = np.append(x, [[7,8]], axis=0) #增加一行
t2 = np.append(y, [[9], [2], [1]], axis=1) #增加一列
5.数组的变形
数组的变形和转换有很多方法,这里简单介绍reshape和resize。
a = np.arange(4).reshape(2, 2) #生成数组[[0,1], [2, 3]]
b = np.arange(4).reshape(2, 2) #生成数组[[0,1], [2, 3]]
print(a.reshape(4,), '\n', a) #输出:[0 1 2 3]和[[0,1], [2,3]]
print(b.resize(4,), '\n', b) #输出:None和[0 1 2 3]
reshape()会返回改变形状后的数组,但是原来的数组不受影响,resize()不会返回,直接对原数组进行修改。
参考资料
Python数学实验与建模(司守奎,孙玺菁)
边栏推荐
- Combat readiness mathematical modeling 31 data interpolation and curve fitting 3
- 从Celsius到三箭:加密百亿巨头们的多米诺,史诗级流动性的枯竭
- Practice with the topic of bit operation force deduction
- Installation tutorial about origin2019
- Codeforces Global Round 21A~D
- 通俗语言说BM3D
- The engine "node" is inconsistent with this module
- 《三体》摘录
- Login authentication service
- Common evaluation indexes of classification model -- confusion matrix and ROC curve
猜你喜欢

备战数学建模32-相关性分析2

Leaflet loading ArcGIS for server map layers

Server create virtual environment run code

【soloπ】adb连接单个多个手机

How to convert data in cell cell into data in matrix

年薪50万是一条线,年薪100万又是一条线…...

人的顶级能量从哪里获取?

'coach, I want to play basketball!'—— AI Learning Series booklet for system students

How to personalize VIM editor format (DIY)

Common controls and custom controls
随机推荐
C language | Consortium
MySQL master-slave replication and read-write separation
Caelus - full scene offline mixed Department solution
Difference between classification and regression
fileinput. js php,fileinput
Datasets dataset class (2)
Stream常用操作以及原理探索
Complete diagram / Euler loop
使用宝塔面板部署flask环境
How to personalize VIM editor format (DIY)
数学建模经验分享:国赛美赛对比/选题参考/常用技巧
C | analysis of malloc implementation
When drawing with origin, capital letter C will appear in the upper left corner of the chart. The removal method is as follows:
【async/await】--异步编程最终解决方案
JVM 输出 GC 日志导致 JVM 卡住,我 TM 人傻了
Deploy the flask environment using the pagoda panel
Jianzhi offer 43.47.46.48 dynamic planning (medium)
H5关闭当前页面,包括微信浏览器(附源码)
Relevant knowledge of information entropy
常用控件及自定义控件