首页 > 其他分享 >NumPy和数组

NumPy和数组

时间:2024-06-13 20:03:08浏览次数:11  
标签:数组 Series 模块 numpy np NumPy pandas

1.NumPy是什么

NumPy(Numerical Python的缩写)是一个开源的Python科学计算模块,其中包含了许多实用的数学函数,用来处理数值型数据。NumPy中,最重要和使用最频繁的对象就是N维数组。


为什么要学习NumPy?

1. 很多更高级的扩展模块都依赖于NumPy,比如pandas

2. NumPy中有计算平均数、中位数等数学相关的内置函数,可以在代码中省去很多的循环语句,帮助我们更加快速和科学地进行计算

3. NumPy提供了一个叫做N维数组的数据结构,它和Python中的列表list类似,但前者的输入输出性能远优于后者


2.N维数组

(1)简介

[...]表示一维数组,和Python中的列表长得很像。[[...]]表示二维数组。

在使用print()输出时,它们的区别在于数组之间的元素是用空格分隔,而列表是以逗号分隔。

一维数组的所有元素都在同一「行」里,一行中可以有很多元素。

在实际上进行输出的时候,数组里面的元素是使用空格分割开来的,但是列表里面的元素是使用的都好进行分割的,因此这个也就是我们从表面上进行区分这个列表和数组的区别;

3.N维数组的创建

(1)想要进行这个数组的创建,首先要安装这个numpy模块,安装numpy非常简单,在终端中输入代码:pip install numpy即可。

安装完后,下一步就是导入numpy。根据NumPy官方文档的倡导,在导入numpy时通常会使用「np」作为numpy的简写,方便以后调用。

这个在进行这个数组的创建的时候,需要去调用相应的函数np.array()函数,这个函数的参数可以是列表,元组等数据结构;下面的这个案例传递进去的参数就是一个二维数组;

# TODO 使用import导入numpy,并使用"np"作为该模块的简写
import numpy as np

# TODO 将题目中的序列作为参数传入np.array()函数中,并将生成的二维数组赋值给变量arr
arr=np.array([[1,2],[4,5],[7,9],[11,12]])

# TODO 使用print()输出变量arr
print(arr)

4.数组的相关计算

(1)数组和数进行计算

数组和数字进行运算的时候就会把这个数组里面的每一个元素都和这个数字进行相应的运算;

下面的这个就是数组和1这个数字进行运算,这个时候数组里面的每一个元素都会减去1;

# 使用import导入numpy,并使用"np"作为该模块的简写
import numpy as np

# 使用np.array()函数创建数组arr
arr = np.array([[2, 1, 7],
                [4, 2, 2]])

# TODO 输出如题所示的运算结果:[[1 0 6]  [3 1 1]]
print(arr-1)

(2)相同形状的数组进行计算

这个就要求数组的形状相同,然后对应位置的元素进行计算

# 使用import导入numpy,并使用"np"作为该模块的简写
import numpy as np

# 使用np.array()函数创建数组arrOne
arrOne = np.array([[5, 0], [0, 5]])
# 使用np.array()函数创建数组arrTwo
arrTwo = np.array([[10, 5], [20, 5]])

# TODO 输出如题所示的运算结果:[[15 5]  [20 10]]
print(arrOne+arrTwo)

5.Pandas模块

(1)下面展示的就是一个简单的字典,字典有索引,我们上面介绍的数组是可以进行计算的,有没有什么既可以使用索引,同时可以进行计算的结构呢:Pandas模块就有这个功能;

(2)Pandas简介

pandas是一个基于NumPy的模块,它的功能在于数据的筛选清洗和处理,与NumPy模块相比,pandas模块更擅长处理二维数据。

pandas模块主要有Series和DataFrame两种数据结构。

在使用pandas模块最开始,由于pandas不是Python的内置模块,我们需要在代码的开头,将pandas模块导入。

为了让其方便调用,我们通常会将其简写成pd。

# TODO 导入pandas模块,简称pd

import pandas as pd

6.Series序列

(1)简单介绍

Series,中文叫做序列,pandas模块的一种数据类型,

是一个一维的、带索引(index)的数组对象。

(2)实际上这个series序列和字典就是类似的,因为这个都是有索引和对应的数值的;

唯一不同的就是,这个字典里面的东西是没有顺序的,但是这个series里面的东西是有顺序的,我们既可以是使用索引找到对应的数值,也可以使用这个下标找到,因为在默认的情况下面,这个下标就是从0开始的;

(3)Series构造函数

下面的就是这个函数的简单的应用,先导入这个模块,传递进去两个列表,这个函数里面第一个参数就是数值,第二个参数就是对应的索引,只不过在这个地方我们使用这个城市的名字作为索引而已,不指定的话就是用默认的01234………………

# 导入pandas模块,简称pd
import pandas as pd

# 定义两个列表
GDP =[80855, 77388, 68024, 47251, 40471]
rank =[1, 2, 3, 4, 5]

# TODO 使用Series构造函数,传入参数:列表GDP作为值,列表rank作为index

# 构造出的Series赋值给info

info = pd.Series(GDP, index = rank)

# 输出info这个Series
print(info)

 (4)函数的参数还可以传递进去数组

下面我们就是用上面的数组的创建的方法,导入数组进行测试,其实这个列表是更常见的参数,只不过这个数组也是会被允许的;

第一行导入的就是序列模块,第二次导入的就是创建数组的模块,然后调用创建数组的函数,和我们的序列的构造函数,数组函数传递的就是一个一维数组,序列构造函数的参数就是一个列表;

# 导入pandas模块,简称pd

import pandas as pd

# 导入numpy模块,简称np

import numpy as np

# TODO 创建一维数组,并赋值给GDP

GDP = np.array([80855,77388,68024,47251,40471])

# 定义列表rank

rank =[1, 2, 3, 4, 5]

# TODO 使用Series构造函数,传入参数:数组GDP作为值,列表rank作为index

# 构造出的Series赋值给info

info = pd.Series(GDP,index = rank)

# 输出info这个Series

print(info)

(5)常量作为函数的参数

我们先导入模块,传递的参数就是常量数组,第一个参数是打印出来的数值,第二个参数就是索引

# 导入pandas模块,简称pd

import pandas as pd

# TODO 使用Series构造函数,传入参数:常量6作为值,列表["a", "b", "c", "d"]作为index,构造出的Series赋值给s

s = pd.Series(6, index=["a", "b", "c", "d"])

# 输出s这个Series

print(s)

标签:数组,Series,模块,numpy,np,NumPy,pandas
From: https://blog.csdn.net/binhyun/article/details/139634124

相关文章

  • 字符数组与字符串
    一、字符数组1.字符数组初始化类型数组名[长度]={元素1,元素2...};类型数组名[长度]=“abcde”;chara[5]={'a','b','c','d','e'};charb[5]="abcde";//错误:末尾还需要存放\0for(inti=0;i<5;i++)cout<<a[i];2.字符数组的输入输出使用cin,cout......
  • 向数组指定位置中插入或者删除,替换数据的方法
    JS在数组指定位置插入/删除/替换数据的方法splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。语法糖:arrayObject.splice(index,howmany,item1,.....,itemX)参数说明:参数 描述index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howm......
  • Q27 LeetCode350 两个数组交集取小
    使用hashmap记录数字个数,如果nums1中重复数字多,遍历2时则不需要取少如果2中重复数字多,则每次取到就-1,直至map内无值  1classSolution{2publicint[]intersect(int[]nums1,int[]nums2){3HashMap<Integer,Integer>map=newHashMap<>();4......
  • [C++ Primer] 字符串、向量和数组
    [C++Primer]字符串、向量和数组标准库类型string标准库类型string表示可变长的字符序列,使用该类型需包含string头文件。作为标准库的i一部分,string定义在命名空间std中。拷贝初始化:使用等号(=)初始化一个变量直接初始化:不使用等号strings5="hiya"; //拷贝初始化s......
  • day05 | 有效的字母异位词、两个数组的交集、快乐数、两数之和
    有效的字母异位词题目链接:242.有效的字母异位词---给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。思路:由于s和t都是由26个小写字母构成,数量很少,直接定义一个......
  • 怎么使用join将数组转为逗号分隔的字符串
    在JavaScript中,你可以使用Array.prototype.join()方法将一个数组转换为逗号分隔的字符串。join()方法接受一个可选的参数,该参数指定了数组元素之间的分隔符。如果不提供参数,则默认使用逗号(,)作为分隔符。下面是一个使用join()方法的例子:letarray=['apple','banana','cher......
  • NumPy 舍入小数、对数、求和和乘积运算详解
    舍入小数在NumPy中,主要有五种方法来舍入小数:截断去除小数部分,并返回最接近零的浮点数。使用trunc()和fix()函数。示例:importnumpyasnparr=np.trunc([-3.1666,3.6667])print(arr)相同的示例,使用fix():importnumpyasnparr=np.fix([-3.1666,3.6667])......
  • 代码随想录第6天 | ●哈希表理论基础●242.有效的字母异位词●349. 两个数组的交集●2
    题目:242.有效的字母异位词思路:1.ASCII和哈希函数,存入数组,比较数组相等否2.首先选择数据结构,题目只有小写字母,ASCII连续,选用数组,一个字符串遍历,在哈希数组中存入字母出现频率,第二个字符串遍历,做减法。(不需要记ASCII,直接减字母,编译器自己算)时间复杂度:O(n)空间复杂度:O(1)坑......
  • C语言王国——数组的旋转(轮转数组)三种解法
    一、题目给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例......
  • (nice!!!)LeetCode 2865. 美丽塔 I(数组、单调栈)
    2865.美丽塔I思路:方法一,时间复杂度0(n^2)。枚举每一个点i作为当前山脉数组的最高点。然后我们通过预处理遍历其前面和后面,来更新两个数组f1、f2。数组f1[i]:表示在满足非递减的情况下,区间0~i,以点i的高度heighs[i]为最高点所能形成的最大高度和。数组f2[i]:表示在满足非......