numpy(六)
NumPy排序和搜索功能排序NumPy 提供了多种排序函数, 这些排序函数可以实现不同的排序算法。排序算法特征主要体现在以下四个方面:执行速度,最坏情况下的复杂度,所需的工作空间以及算法的稳定性。
下表列举了三种排序算法:
numpy.sort()
numpy.sort() 对输入数组执行排序,并返回一个数组副本numpy.sort(a, axis, kind, order)
a:要排序的数组;axis:沿着指定轴进行排序,如果没有指定 axis,默认在最后一个轴上排序,若 axis=0 表示按列排序,axis=1 表示按行排序kind:默认为 quicksort(快速排序)order:若数组设置了字段,则 order 表示要排序的字段
123456789101112131415import numpy as np a = np.array([[3,7],[9,1]]) print('a数组是:')print(a)#调用sort()函数print(np.sort(a))#按列排序:print(np.sort(a, axis = 0))#设置在 ...
numpy(五)
NumPy数学函数NumPy 中包含了大量的数学函数,它们用于执行各种数学运算,其中包括三角函数、舍入函数等等
三角函数NumPy 中提供了用于弧度计算的的 sin()(正弦)、cos()(余弦)和 tan()(正切)三角函数。
1234567import numpy as np arr = np.array([0, 30, 60, 90, 120, 150, 180]) #计算arr数组中给定角度的三角函数值#通过乘以np.pi/180将其转换为弧度print(np.sin(arr * np.pi/180)) print(np.cos(arr * np.pi/180)) print(np.tan(arr * np.pi/180))
反三角函数除了上述三角函数以外,NumPy 还提供了 arcsin,arcos 和 arctan 反三角函数。若要想验证反三角函数的结果,可以通过 numpy.degrees() 将弧度转换为角度来实现
123456789101112131415161718192021222324import numpy as np arr = np.array( ...
numpy(四)
NumPy数组元素增删改查NumPy 数组元素的增删改查主要有以下方法:
resize返回指定形状的新数组。
append将元素值添加到数组的末尾。
insert沿规定的轴将元素值插入到指定的元素前。
delete删掉某个轴上的子数组,并返回删除后的新数组。
argwhere返回数组内符合条件的元素的索引值。
unique用于删除数组中重复的元素,并按元素值由大到小返回一个新数组。
numpy.resize()
numpy.resize() 返回指定形状的新数组
numpy.resize(arr, shape)
12345678910111213import numpy as npa = np.array([[1,2,3],[4,5,6]])print(a)#a数组的形状print(a.shape)b = np.resize(a,(3,2))#b数组print (b)#b数组的形状print(b.shape)#修改b数组使其形状大于原始数组,会在那些比原来多的位置上重复前面的元素b = np.resize(a,(3,3))print(b)
这里需要区别 resize() 和 re ...
numpy(三)
NumPy广播机制NumPy 中的广播机制(Broadcast)旨在解决不同形状数组之间的算术运算问题。我们知道,如果进行运算的两个数组形状完全相同,它们直接可以做相应的运算
12345import numpy as npa = np.array([0.1,0.2,0.3,0.4])b = np.array([10,20,30,40])c = a * bprint(c)
但如果两个形状不同的数组呢?它们之间就不能做算术运算了吗?当然不是!为了保持数组形状相同,NumPy 设计了一种广播机制,这种机制的核心是对形状较小的数组,在横向或纵向上进行一定次数的重复,使其与形状较大的数组拥有相同的维度。
当进行运算的两个数组形状不同,Numpy 会自动触发广播机制
12345678import numpy as npa = np.array([[ 0, 0, 0], [10,10,10], [20,20,20], [30,30,30]])#b数组与a数组形状不同b = np.array([1,2,3])print(a + b)
...
numpy(二)
Numpy创建数组创建 ndarray 数组的基本方法,除了使用 array() 方法外,NumPy 还提供了其他创建 ndarray 数组的方法。
numpy.empty()numpy.empty() 创建未初始化的数组,可以指定创建数组的形状(shape)和数据类型(dtype)
语法格式:
numpy.empty(shape, dtype = float, order = ‘C’)它接受以下参数:shape:指定数组的形状;dtype:数组元素的数据类型,默认值是值 float;order:指数组元素在计算机内存中的储存顺序,默认顺序是“C”(行优先顺序)。
123import numpy as np arr = np.empty((3,2), dtype = int) print(arr)
切记 empty 并非创建空数组。
numpy.zeros()该函数用来创建元素均为 0 的数组,同时还可以指定被数组的形状语法格式:numpy. zeros(shape,dtype=float,order=”C”)
shape指定数组的形状大小。 ...
numpy(一)
NumPy ndarray对象创建ndarray对象
通过 NumPy 的内置函数 array() 可以创建 ndarray 对象,其语法格式如下
numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)
object表示一个数组序列。dtype可选参数,通过它可以更改数组的数据类型。copy可选参数,表示数组能否被复制,默认是 True。order以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认)。ndim用于指定数组的维度。
1234import numpya=numpy.array([1,2,3])#使用列表构建一维数组print(a)print(type(a))
12b=numpy.array([[1,2,3],[4,5,6]]) #创建多维数组print(b)
如果要改变数组元素的数据类型,可以使用通过设置 dtype,如下所示:c=numpy.array([2,4,6,8],dtyp ...
帅到没朋友---团队程序设计天梯赛
输入格式:
输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。
注意: 没有朋友的人可以是根本没安装“朋友圈”,也可以是只有自己一个人在朋友圈的人。虽然有个别自恋狂会自己把自己反复加进朋友圈,但题目保证所有K超过1的朋友圈里都至少有2个不同的人。
输出格式:按输入的顺序输出那些帅到没朋友的人。ID间用1个空格分隔,行的首尾不得有多余空格。如果没有人太帅,则输出No one is handsome。
注意:同一个人可以被查询多次,但只输出一次。
输入样例1:
12345633 11111 22222 555552 33333 444444 55555 66666 99999 77777855555 44444 10000 88888 22222 11111 23333 88888
输出样例 ...
A-B---团体程序设计天梯赛
题:本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过10的4次方,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A−B的结果字符串。
输入样例:
12I love GPLT! It's a fun game!aeiou
输出样例:
1I lv GPLT! It's fn gm!
题解1是博主当时练习的时候写的,只得了15分,欢迎各位小伙伴指正哪里 有问题
题解2是老师说了一下strchr函数,博主改的,是满分题解1:
1234567891011121314151617181920212223242526272829#include<stdio.h>#include <string.h>int main(){ char A[100000], B[100000]; int i = 0, j= 0,n; ...
N个数求和----团队程序设计天梯赛
L1-009 N个数求和题:本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。
输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出格式:
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。
这里的输出样例就是告诉我们,有三种输出情况,我们都要考虑进去输出样例1:有整数也有分数输出样例2:只有整数输出样例3:只有分数
输入样例1:
1252/5 4/15 1/30 -2/60 8/3
输出样例1:
13 1/3
输入样例2:
1224/3 2/3
输出样例2:
12
输入样例3:
1231/3 -1/6 1/8
输出样例3:
17/24
博主这里使用的是c语言写的,如果需要python解答的可以私信博主要题解:
...
求整数段和---团体程序设计天梯赛(超详细)
题:给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
输入样例:
-3 8
输出样例:
-3 -2 -1 0 12 3 4 5 67 8Sum = 30
求解思路关键步骤在代码中有注释
解决输出每个数字占5个字符宽度,向右对齐
5个数字占一行的,换行操作
易被疏漏的一点 判断输出完A~~B之间的所有数后是否还要换行
答案:12345678910111213141516171819202122232425262728293031#include <stdio.h>int main(){ int A, B; int i, sum =0, num =0; scanf("%d %d", &A, &am ...