刷题~~ 刷题 ~~
原题地址https://github.com/rougier/numpy-100
1.导入numpy并命名为np
import numpy as np
2.打印numpy的版本和配置
print(np.__version__)
np.show_config()
3.创建一个大小为10的0向量
np.zeros(10)
4.查看数组的内存大小
a = np.zeros(10)
a.size#查看数组有多少个元素
a.itemsize#查看每个元素占了多少个字节
a.nbytes#查看数组一共占了多少内存,等同于a.size*a.itemsize
【Numpy-100练习题(★☆☆)】5.如何获取numpy中的add函数的文档
np.info(np.add)
6.创建一个大小为10的0向量,但第五个值为1
a = np.zeros(10)
a[4] = 1
7.创建有I个10-49的数组
np.arange(10,50)
8.翻转一个向量(第一个元素变为最后一个)
a = np.arange(1,11)
a = a[::-1]
9.创建一个3×3矩阵,值在0-8之间
#方法一
a = np.arange(9)
a.shape = 3,3#方法二
a = np.arange(9).reshape(3,3)
10.找出[1,2,0,0,4,0]中的非零元素的索引
np.nonzero([1,2,0,0,4,0])
11.创建一个3×3的单位矩阵
np.eye(3)
12.随机创建一个3×3×3的数组
np.random.random((3,3,3))
13.随机创建一个10×10的数组,并找出最大最小值
a = np.random.random((10,10))
a.max()
a.min()
14.创建一个大小为30的随机向量,并求其平均值
a = np.random.random(30)
a.mean()
15.创建一个二维数组,外边框为1,内部为0
#方法一
a = np.ones((10,10))
a = a[1:-1,1:-1] = 0#方法二
a = np.zeros((8,8))
a = np.pad(a,pad_width = 1,mode = 'constant',constant_values = 1)
16.在现有的矩阵列周围添加一圈0
a = np.ones((5,5))
a = np.pad(a,pad_width = 1,mode = 'constant',constant_values = 0)
17.下面式子的输出结果
print(0*np.nan)# nan
print(np.nan == np.nan)# False
print(np.inf > np.nan)# False
print(np.nan - np.nan)# nan
print(np.nan in set([np.nan]))# True
print(0.3 == 3*0.1)# Flase
18.创建一个5×5的矩阵,对角线的下方值对应为1,2,3,4
a = np.diag(np.arange(1,6),k =-1)
# k为偏移量,k=-1表示在斜对角线的下方第一列,k=1表示在斜对角线的上方第一列,k=0表示无偏移
19.创建一个8×8的矩阵,棋盘式填充
a = np.zeros((8,8),dtype=int)
a[1::2,::2] = 1
a[::2,1::2] = 1
20.形状为(6,7,8)的数组第100的元素的索引(x,y,z)是什么
np.unravel_index(100,(6,7,8))
21.使用tile创建一个8×8的棋盘格矩阵
np.tile([[0,1],[1,0]],[4,4])
函数格式tile(A,reps)
A和reps都是array_like
A的类型众多,几乎所有类型都可以:array, list, tuple, dict, matrix以及基本数据类型int, string, float以,bool。
reps的类型也很多,可以是tuple,list, dict, array, int, bool.但不可以是float, string, matrix类型。
22.随机生成5×5的归一化矩阵
a= np.random.random((5,5))
a = (a-np.mean(a))/(np.std(a))
23.创建一个自定义字符类型,将颜色描述为四个无符号字节(RGBA)
color = np.dtype([("r", np.ubyte, 1),
("g", np.ubyte, 1),
("b", np.ubyte, 1),
("a", np.ubyte, 1)])
24.将5×3矩阵乘以3×2矩阵
a = np.ones((5,3))
b = np.ones((3,2))
#方法一
a.dot(b)
#方法二
np.dot(a,b)
25.给定一维数组,其中元素的大小在3到8之间的取负数
a = np.arange(1,12)
a[(a>3)&(a<8)] *= -1
26.下面命令输出的结果是?
print(sum(range(5),-1))# 输出9
from numpy import *
print(sum(range(5),-1))# 输出10
python自带sum
输入是个可迭代的。可以是列表,数组,可迭代对象。
sum最多有两个参数,第一个参数是可迭代的。当有两个参数时,第二个参数只能是个数。
sum(iterable, start)=可迭代的所有相加和+start值
numpy中的sum
输入可以是列表,元组,数组。
对于数组可以指定维度进行相加。默认为axis=none。
sum(a,axis)
axis = 0 —— 纵向
axis = 1 —— 横向
axis = -1 —— 最高维度
27.下列式子中哪些是合法的?
Z**Z
2 << Z >> 2
Z <- Z
1j*Z
Z/1/1
ZZ#不合法
28.下面命令输出的结果是?
print(np.array(0) / np.array(0))# nan
print(np.array(0) // np.array(0))# 0
print(np.array([np.nan]).astype(int).astype(float))#[-2.14748365e+09]
29.数组的四舍五入
Z = np.random.uniform(-10,+10,10)
print (np.copysign(np.ceil(np.abs(Z)), Z))
np.copysign(ndarray, ndarray) 将参数2中的符号赋予参数1
30.找出两个数组之间的相同值
a1 = np.random.randint(0,10,10)
a2 = np.random.randint(0,10,10)
print(np.intersect1d(a1,a2))
函数 | 说明 |
---|---|
np.intersect1d( ndarray1, ndarray2) | 返回二者的交集并排序 |
np.union1d( ndarray1, ndarray2) | 返回二者的并集并排序 |
np.setdiff1d( ndarray1, ndarray2) | 返回二者的差 |
np.setxor1d( ndarray1, ndarray2) | 返回二者的对称差 |
defaults = np.seterr(all="ignore")
32.下面的表达式正确吗?
np.sqrt(-1) == np.emath.sqrt(-1)# False
33.如何获取昨天、今天、明天的日期
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today= np.datetime64('today', 'D')
tomorrow= np.datetime64('today', 'D') + np.timedelta64(1, 'D')
推荐阅读
- python学习|利用python爬虫技术获取每天每场的每位球员NBA数据以及每日范特西评分
- Python学习|Python学习笔记
- pytorch学习笔记|pytorch-resnet34残差网络理解
- python学习|windows如何安装并切换不同版本的cuda,更新cuda版本
- python-Django如何可以用真实的IP访问(四)
- 各种算法的Python实现方案
- C++|Leetcode 076 最小覆盖子串 Python C++ 史上最详细题解系列
- raise ImportError(msg.format(path)) ImportError: Something is wrong with the numpy installation
- python|Anaconda 之 更换国内下载镜像