Numpy 练习题50道_numpy练习题-程序员宅基地

技术标签: c++  c语言  蓝桥杯  

练习

  1. 导入numpy库并简写为np
import numpy as np
  1. 打印numpy的版本和配置说明
import numpy as np
print(np.__version__)
np.show_config()

输出:

1.21.3
blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
...
  1. 创建一个长度为10的空向量
import numpy as np
np.empty(10)
  1. 找到任何一个数组的内存大小
import numpy as np
data = np.random.randn(2, 2)
print("%d bytes" % (data.size * data.itemsize))

输出:

32 bytes
  1. 从命令行得到numpyadd函数的说明文档
import numpy as np
np.info(np.add)
  1. 创建一个长度为10并且除了第5个值为1的空向量
import numpy as np
data = np.zeros(10)
data[4] = 5
print(data)
  1. 创建一个值域范围从10到49的向量
import numpy as np
data = np.arange(10,50)
print(data)
  1. 反转一个向量(第一个元素变为最后一个)
import numpy as np
data = np.arange(1, 11)
data = data[::-1]
print(data)
  1. 创建一个 3x3 并且值从0到8的矩阵
import numpy as np
data = np.arange(9).reshape(3,3)
print(data)
  1. 找到数组[1,2,0,0,4,0]中非0元素的位置索引
import numpy as np
data = np.array([1, 2, 0, 0, 4, 0])
nz = np.nonzero(data)
print(nz)
import numpy as np
data = np.array([1, 2, 0, 0, 4, 0])
for x in np.arange(0, len(data)):
    if data[x] != 0:
        print(x)
  1. 创建一个 3 × 3 3 \times 3 3×3 的单位矩阵
import numpy as np
data = np.eye(3)
  1. 创建一个 3 × 3 × 3 3 \times 3 \times 3 3×3×3的随机数组
import numpy as np
data = np.random.random((3, 3, 3))
print(data)
  1. 创建一个 10 × 10 10 \times 10 10×10 的随机数组并找到它的最大值和最小值
import numpy as np
data = np.random.random((10, 10))
print(np.max(data))
print(np.min(data))
  1. 创建一个长度为30的随机向量并找到它的平均值
import numpy as np
data = np.random.random(10)
print(np.mean(data))
  1. 创建一个二维数组,其中边界值为1,其余值为0
import numpy as np
data = np.zeros((3,3))
data[0, :] = 1 #第1行
data[-1,:] = 1 #最后1行
data[:, 0] = 1 #第1列
data[:,-1] = 1 #最后1列
print(data)
  1. 对于一个已存在数组,添加一个用0填充的边界
import numpy as np
data = np.ones((5, 5))
data = np.pad(data, pad_width=1, mode='constant', constant_values=0)

  1. 以下表达式运行的结果分别是什么?
0 * np.nan  
np.nan == np.nan  
np.inf > np.nan  
np.nan - np.nan  
0.3 == 3 * 0.1

输出:

#NaN = not a number, inf = infinity
nan
False
False
nan
False
  1. 创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置
import numpy as np
data = np.diag(1+np.arange(4), k=-1)
print(data)
  1. 创建一个8x8 的矩阵,并且设置成棋盘样式
import numpy as np
data = np.zeros((8, 8), dtype=int)
data[1::2, ::2] = 1
data[::2, 1::2] = 1
print(data)
  1. 一个 (6,7,8) 形状的数组,其第100个元素的索引(x,y,z)是什么
import numpy as np
print(np.unravel_index(100,(6,7,8)))
  1. tile函数去创建一个 8 × 8 8 \times 8 8×8的棋盘样式矩阵
import numpy as np
data = np.tile(np.array([[0, 1], [1, 0]]), (4, 4))
print(data)
  1. 对一个 5 × 5 5 \times 5 5×5的随机矩阵做归一化
import numpy as np
data = np.random.random((5,5))
data_max, data_min = data.max(), data.min();
data = (data-data_min)/(data_max-data_min);
print(data)

  1. 创建一个将颜色描述为(RGBA)四个无符号字节的自定义dtype
import numpy as np
color = np.dtype([("r", np.ubyte, (1,)),
                  ("g", np.ubyte, (1,)),
                  ("b", np.ubyte, (1,)),
                  ("a", np.ubyte, (1,))])
print(color)
  1. 一个 5 × 3 5 \times 3 5×3的矩阵与一个 3 × 2 3 \times 2 3×2的矩阵相乘,实矩阵乘积是什么?
import numpy as np
data_1 = np.random.randn(5, 3)
data_2 = np.random.randn(3, 2)
data = np.dot(data_1, data_2)
print(data)
  1. 给定一个一维数组,对其在3到8之间的所有元素取反
import numpy as np
data = np.arange(11)
data[(data>3) & (data<8)] *= -1
print(data)

26.下面脚本运行后的结果是什么?

print(sum(range(5),-1)) #对提供的可迭代对象进行迭代,对值求和,然后加-1

输出:

9
from numpy import *
print(sum(range(5),-1)) #将提供的列表所有值求和

输出

10
  1. 考虑一个整数向量Z,下列表达合法的是哪个?
import numpy as np
Z = np.arange(1, 6);
print(Z**Z)
print(2 << Z >> 2)
print(Z <- Z)
print(1j*Z)
print(Z/1/1)
print(Z<Z>Z)
  1. 下列表达式的结果分别是什么?
import numpy as np
print(np.array(0) / np.array(0))
print(np.array(0) // np.array(0))
print(np.array([np.nan]).astype(int).astype(float))
  1. 如何从零位对浮点数组做舍入?
import numpy as np
# 从均匀[0,1)分布中抽取样本
data = np.random.uniform(-10,+10,10) 
print(np.copysign(np.ceil(np.abs(data)), data))
  1. 如何找到两个数组中的共同元素?
import numpy as np
data_1 = np.arange(1,6)
data_2 = np.arange(3,8)
print(np.intersect1d(data_1, data_2))
  1. 如何忽略所有的 numpy 警告(尽管不建议这么做)?
import numpy as np
defaults = np.seterr(all="ignore")
data = np.ones(1) / 0
  1. 下面的表达式是正确的吗?
import numpy as np
print(np.sqrt(-1) == np.emath.sqrt(-1))
  1. 如何得到昨天,今天,明天的日期?
import numpy as np
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print("Yesterday is " + str(yesterday))
print("Today is " + str(today))
print("Tomorrow is "+ str(tomorrow))
  1. 如何得到所有与2016年7月对应的日期?
import numpy as np
data = np.arange('2016-07', '2016-08', dtype='datetime64[D]')
print(data)
  1. 如何直接在位计算(A+B)*(-A/2)(不建立副本)?
import numpy as np
A = np.ones(3)*1
B = np.ones(3)*2
C = np.ones(3)*3
np.add(A,B,out=B)
np.divide(A,2,out=A)
np.negative(A,out=A)
np.multiply(A,B,out=A)
  1. 用五种不同的方法去提取一个随机数组的整数部分
import numpy as np
data = np.random.uniform(0, 10, 10)
# 减去小数位
print(data-data % 1)
# 向下取整
print(np.floor(data))
# 向上取整后减1
print(np.ceil(data)-1)
# 将数据格式变为int
print(data.astype(int))
# 截断函数trunc,丢弃带符号数的小数部分
print(np.trunc(data))
  1. 创建一个 5 × 5 5 \times 5 5×5的矩阵,其中每行的数值范围从0到4
import numpy as np
data = np.zeros((5, 5))
data += np.arange(0, 5)
print(data)
  1. 通过考虑一个可生成10个整数的函数,来构建一个数组
import numpy as np


def temp():
    return np.arange(0,10)


data = temp()
print(data)
  1. 创建一个长度为10的随机向量,其值域范围从0到1,但是不包括0和1
import numpy as np
# np.linspace()在指定的间隔内返回均匀间隔的数字
# endpoint设置将不包括1
# [1:]将0剔除
data = np.linspace(0, 1, 11, endpoint=False)[1:]
print(data)
  1. 创建一个长度为10的随机向量,并将其排序
import numpy as np
data= np.random.randn(10)
data.sort()
print(data)
  1. 对于一个小数组,如何用比 np.sum更快的方式对其求和?
import numpy as np
data = np.arange(10)
print(np.add.reduce(data))

  1. 对于两个随机数组A和B,检查它们是否相等
import numpy as np
A = np.arange(1, 5)
B = np.arange(3, 7)
# np.allclose比较两个array是不是每一元素都相等
equal = np.allclose(A, B)
print(equal)

  1. 创建一个只读数组(read-only)
import numpy as np
Z = np.zeros(10)
Z.flags.writeable = False
Z[0] = 1  

  1. 将笛卡尔坐标下的一个 10 × 2 10 \times 2 10×2的矩阵转换为极坐标形式
import numpy as np
Z = np.random.random((10,2))
X,Y = Z[:,0], Z[:,1]
R = np.sqrt(X**2+Y**2)
T = np.arctan2(Y,X)
print(R)
print(T)

  1. 创建一个长度为10的向量,并将向量中最大值替换为1
import numpy as np
data = np.arange(0, 8)
data_max = data.max()
data[data == data_max] = 1
print(data)

import numpy as np
data = np.arange(0, 8)
data[data.argmax()] = 0
print(data)
  1. 创建一个结构化数组,并实现 x x x y y y 坐标覆盖 [ 0 , 1 ] ∼ [ 0 , 1 ] [0,1] \sim [0,1] [0,1][0,1]
import numpy as np
data = np.zeros((5, 5), [('x', float), ('y', float)])
data['x'], data['y'] = np.meshgrid(np.linspace(0, 1, 5),
                              np.linspace(0, 1, 5))
print(data)
  1. 给定两个数组 X X X Y Y Y,构造Cauchy矩阵 C ( C i j = 1 / ( x i − y j ) ) C(C_{ij} =1/(x_i - y_j)) C(Cij=1/(xiyj))
import numpy as np
X = np.arange(8)
Y = X + 0.5
C = 1.0 / np.subtract.outer(X, Y)
print(np.linalg.det(C))

  1. 打印每个numpy标量类型的最小值和最大值
import numpy as np
for dtype in [np.int8, np.int32, np.int64]:
     print(np.iinfo(dtype).min)
     print(np.iinfo(dtype).max)

for dtype in [np.float32, np.float64]:
     print(np.finfo(dtype).min)
     print(np.finfo(dtype).max)
     print(np.finfo(dtype).eps)
  1. 如何打印一个数组中的所有数值?
np.set_printoptions(threshold=np.nan)
data = np.zeros((16,16))
print(data)
  1. 给定标量时,如何找到数组中最接近标量的值
data = np.arange(100)
v = np.random.uniform(0,100)
index = (np.abs(data-v)).argmin()
print (data[index])
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_20144897/article/details/123363627

智能推荐

【史上最易懂】马尔科夫链-蒙特卡洛方法:基于马尔科夫链的采样方法,从概率分布中随机抽取样本,从而得到分布的近似_马尔科夫链期望怎么求-程序员宅基地

文章浏览阅读1.3k次,点赞40次,收藏19次。虽然你不能直接计算每个房间的人数,但通过马尔科夫链的蒙特卡洛方法,你可以从任意状态(房间)开始采样,并最终收敛到目标分布(人数分布)。然后,根据一个规则(假设转移概率是基于房间的人数,人数较多的房间具有较高的转移概率),你随机选择一个相邻的房间作为下一个状态。比如在巨大城堡,里面有很多房间,找到每个房间里的人数分布情况(每个房间被访问的次数),但是你不能一次进入所有的房间并计数。但是,当你重复这个过程很多次时,你会发现你更有可能停留在人数更多的房间,而在人数较少的房间停留的次数较少。_马尔科夫链期望怎么求

linux以root登陆命令,su命令和sudo命令,以及限制root用户登录-程序员宅基地

文章浏览阅读3.9k次。一、su命令su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。命令su的格式为:su [-] username1、后面可以跟 ‘-‘ 也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户。 ‘-‘ 这个字符的作用是,加上后会初始化当前用户的各种环境变量。下面看下加‘-’和不加‘-’的区别:root用户切换到普通..._限制su root登陆

精通VC与Matlab联合编程(六)_精通vc和matlab联合编程 六-程序员宅基地

文章浏览阅读1.2k次。精通VC与Matlab联合编程(六)作者:邓科下载源代码浅析VC与MATLAB联合编程浅析VC与MATLAB联合编程浅析VC与MATLAB联合编程浅析VC与MATLAB联合编程浅析VC与MATLAB联合编程  Matlab C/C++函数库是Matlab扩展功能重要的组成部分,包含了大量的用C/C++语言重新编写的Matlab函数,主要包括初等数学函数、线形代数函数、矩阵操作函数、数值计算函数_精通vc和matlab联合编程 六

Asp.Net MVC2中扩展ModelMetadata的DescriptionAttribute。-程序员宅基地

文章浏览阅读128次。在MVC2中默认并没有实现DescriptionAttribute(虽然可以找到这个属性,通过阅读MVC源码,发现并没有实现方法),这很不方便,特别是我们使用EditorForModel的时候,我们需要对字段进行简要的介绍,下面来扩展这个属性。新建类 DescriptionMetadataProvider然后重写DataAnnotationsModelMetadataPro..._asp.net mvc 模型description

领域模型架构 eShopOnWeb项目分析 上-程序员宅基地

文章浏览阅读1.3k次。一.概述  本篇继续探讨web应用架构,讲基于DDD风格下最初的领域模型架构,不同于DDD风格下CQRS架构,二者架构主要区别是领域层的变化。 架构的演变是从领域模型到C..._eshoponweb

Springboot中使用kafka_springboot kafka-程序员宅基地

文章浏览阅读2.6w次,点赞23次,收藏85次。首先说明,本人之前没用过zookeeper、kafka等,尚硅谷十几个小时的教程实在没有耐心看,现在我也不知道分区、副本之类的概念。用kafka只是听说他比RabbitMQ快,我也是昨天晚上刚使用,下文中若有讲错的地方或者我的理解与它的本质有偏差的地方请包涵。此文背景的环境是windows,linux流程也差不多。 官网下载kafka,选择Binary downloads Apache Kafka 解压在D盘下或者什么地方,注意不要放在桌面等绝对路径太长的地方 打开conf_springboot kafka

随便推点

VS2008+水晶报表 发布后可能无法打印的解决办法_水晶报表 不能打印-程序员宅基地

文章浏览阅读1k次。编好水晶报表代码,用的是ActiveX模式,在本机运行,第一次运行提示安装ActiveX控件,安装后,一切正常,能正常打印,但发布到网站那边运行,可能是一闪而过,连提示安装ActiveX控件也没有,甚至相关的功能图标都不能正常显示,再点"打印图标"也是没反应解决方法是: 1.先下载"PrintControl.cab" http://support.businessobjects.c_水晶报表 不能打印

一. UC/OS-Ⅱ简介_ucos-程序员宅基地

文章浏览阅读1.3k次。绝大部分UC/OS-II的源码是用移植性很强的ANSI C写的。也就是说某产品可以只使用很少几个UC/OS-II调用,而另一个产品则使用了几乎所有UC/OS-II的功能,这样可以减少产品中的UC/OS-II所需的存储器空间(RAM和ROM)。UC/OS-II是为嵌入式应用而设计的,这就意味着,只要用户有固化手段(C编译、连接、下载和固化), UC/OS-II可以嵌入到用户的产品中成为产品的一部分。1998年uC/OS-II,目前的版本uC/OS -II V2.61,2.72。1.UC/OS-Ⅱ简介。_ucos

python自动化运维要学什么,python自动化运维项目_运维学python该学些什么-程序员宅基地

文章浏览阅读614次,点赞22次,收藏11次。大家好,本文将围绕python自动化运维需要掌握的技能展开说明,python自动化运维从入门到精通是一个很多人都想弄明白的事情,想搞清楚python自动化运维快速入门 pdf需要先了解以下几个事情。这篇文章主要介绍了一个有趣的事情,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。_运维学python该学些什么

解决IISASP调用XmlHTTP出现msxml3.dll (0x80070005) 拒绝访问的错误-程序员宅基地

文章浏览阅读524次。2019独角兽企业重金招聘Python工程师标准>>> ..._hotfix for msxml 4.0 service pack 2 - kb832414

python和易语言的脚本哪门更实用?_易语言还是python适合辅助-程序员宅基地

文章浏览阅读546次。python和易语言的脚本哪门更实用?_易语言还是python适合辅助

redis watch使用场景_详解redis中的锁以及使用场景-程序员宅基地

文章浏览阅读134次。详解redis中的锁以及使用场景,指令,事务,分布式,命令,时间详解redis中的锁以及使用场景易采站长站,站长之家为您整理了详解redis中的锁以及使用场景的相关内容。分布式锁什么是分布式锁?分布式锁是控制分布式系统之间同步访问共享资源的一种方式。为什么要使用分布式锁?​ 为了保证共享资源的数据一致性。什么场景下使用分布式锁?​ 数据重要且要保证一致性如何实现分布式锁?主要介绍使用redis来实..._redis setnx watch

推荐文章

热门文章

相关标签