文章目录
- 1. 导入numpy库并简写np
- 2. 打印numpy版本和配置说明
- 3. 创建长度为10 的空向量
- 4. 任何一个数组的内存大小
- 5.从命令行得到函数说明文档
- 6.创建长度为10除第5个值为1的空向量
- 7.创建值域范围为10到49的向量
- 8.反转一个向量
- 9.创建3*3且值从0到8的矩阵
- 10.找到数组中非0的位置索引
- 11.创建3*3的单位矩阵
- 12.创建3*3*3的随机数组
- 13.创建10*10的随机数组并取最大值和最小值
- 14.创建长度为30的随机向量并找到它的平均值
- 15.创建一个二维数组,边界为1,其余为0
- 16.对一个存在的数组,添加边界为0
- 17 判断是否是NAN
- 18 创建5*5的矩阵,并设置值1,2,3,4落在其对角线下方位置
- 19 创建5*5的矩阵,设置棋盘样式
- 20 (6,7,8)形状组成的数组,其第100个索引的(x,y,z)是什么?
- 21 用tile函数创建8*8的棋盘矩阵
- 22 对一个5*5的随机矩阵做归一化
- 23 一个5*3的矩阵 和一个3*2的矩阵相乘
- 25 对数组 3到8之间数取反
- 26 numpy.sum
- 27 向量运算 z**z
- 30 找到两个元素中的共同元素
- 33 昨天 今天 明天的日期
- 34 202207对应的日期
- 35 用5种方法取整
- 40 创建长度为10的向量并排序
- 45 最多值赋权0
- 55 numpy 与enumerate的等价的操作
- 57 二维数组内部 随机放置P个元素
- 61 从数组中的给定值中找出最近值
- 69 获得点积的对角线
- 72 数组中任意两行做交换
- 80 找到一个数组中出现频率最高的值
提示: 100道题 带你玩转numpy
1. 导入numpy库并简写np
import numpy as np
2. 打印numpy版本和配置说明
print(np.__version__)
print(np.show_config())
3. 创建长度为10 的空向量
print(np.zeros(10))
4. 任何一个数组的内存大小
data = np.zeros((10,10))
print('%d byte'%(data.size*data.itemsize))
5.从命令行得到函数说明文档
print(np.info(np.add))
6.创建长度为10除第5个值为1的空向量
data = np.zeros(10)
data[4]=1
print(data)
7.创建值域范围为10到49的向量
data = np.arange(10,50)
print(data)
8.反转一个向量
data = np.arange(50)
data = data[::-1]
print(data)
9.创建3*3且值从0到8的矩阵
a = np.arange(9).reshape(3,3)
print(a)
10.找到数组中非0的位置索引
nz = np.nonzero([1,3,5,0,0,9])
print(nz)
11.创建3*3的单位矩阵
data = np.eye(3)
print(data)
12.创建333的随机数组
#随机生成(0,1)之间的浮点数
data = np.random.random((3,3,3))
print(data)
#返回一个或一组服从**“0~1”均匀分布**的随机样本值
numpy.random.rand(3,3)
#返回一个或多个从标准正态分布的样本值
numpy.random.randn(3,3)
13.创建10*10的随机数组并取最大值和最小值
data = np.random.random((5,5))
# 值
print(np.amax(data))#返回值值
print(np.amax(data, axis=0)) #竖着比较,返回值
print(np.amax(data, axis=1)) #横着比较,返回值
#索引
print(data)
print(np.argmax(data))#此时得到的索引是将数组
#flattern(展成一维数组)后的索引 (17)
#如何得到对应的原数组的索引呢?
ind_max_src = np.unravel_index(np.argmax(data), (5,5))
print(ind_max_src)#(3,2)
print(np.argmax(data, axis=0)) #竖着比较,返回行号
print(np.argmax(data, axis=1)) #横着比较,返回列号
14.创建长度为30的随机向量并找到它的平均值
data = np.random.random(30)
m =data.mean()
print(m)
15.创建一个二维数组,边界为1,其余为0
data = np.ones((5,5))
data[1:-1,1:-1]=0
print(data)
16.对一个存在的数组,添加边界为0
data = np.ones((5,5))
data=np.pad(data,pad_width=1,mode='constant',constant_values=0)
print(data)
17 判断是否是NAN
print(np.isnan(np.nan))
# p.nan和任何数做不等于比较都返回True
# np.nan != np.nan
# np.nan != 0
# np.nan != None
# np.nan != 0.0
18 创建5*5的矩阵,并设置值1,2,3,4落在其对角线下方位置
print(np.diag(1+np.arange(4),k=-1))
np.diag(v, k=0)
用处:提取对角线元素或构造对角线数组。
参数:K: 对角线的位置参数,0为默认主对角线,1为主对角线偏上一个单位,-1为主对角线偏下一个单位,以此类推。
v: 如果v为一个二维数组(矩阵),则返回该二维数组(矩阵)的K对角线元素,即用来提取返回对角线元素的作用。
如果v为一个一维数组的话,则返回一个以该一维数组作为k对角线元素的矩阵,即用来生成一个对角线元素数组
19 创建5*5的矩阵,设置棋盘样式
data = np.zeros((5,5))
data[::2,1::2]=1
data[1::2,::2]=1
print(data)
20 (6,7,8)形状组成的数组,其第100个索引的(x,y,z)是什么?
print(np.unravel_index(100,(6,7,8)))
21 用tile函数创建8*8的棋盘矩阵
data = np.tile(np.array([[0,1],[1,0]]),(4,4))
print(data)
22 对一个5*5的随机矩阵做归一化
data = np.random.randint(1,10,(5,5))
datamax,datamin = np.amax(data),np.amin(data)
print((data-datamin)/(datamax-datamin))
23 一个53的矩阵 和一个32的矩阵相乘
data = np.dot(np.ones((5,3)),np.arange(6).reshape(3,2))
print(data)
25 对数组 3到8之间数取反
data = np.arange(10)
data[(3<data)&(data<9)]*=-1
print(data)
26 numpy.sum
# python sum
print(sum(range(5),-1)) # 9 1+2+3+4+5-1
# numpy sum
from numpy import *
print(sum(range(5),-1))# 10 -1 表示最后一个维度上相加
27 向量运算 z**z
data = np.arange(5)
print(data**data)
30 找到两个元素中的共同元素
data1 = np.random.randint(1,10,5)
data2 = np.random.randint(1,10,5)
print(np.intersect1d(data1,data2))
33 昨天 今天 明天的日期
today = np.datetime64('today','D')
print(today -np.timedelta64(1,'D'))
print(today+np.timedelta64(1,'D'))
34 202207对应的日期
date = np.arange('2022-07','2022-08',dtype='datetime64[D]')
print(date)
35 用5种方法取整
data = np.random.uniform(1,10,10)
print(data)
print(np.ceil(data)-1)
print(np.floor(data))
print(np.trunc(data))
print(data -data%1)
print(data.astype(int))
40 创建长度为10的向量并排序
data = np.random.random(10)
data.sort()
print(data)
45 最多值赋权0
data = np.random.random(10)
data[data.argmax()]=0
print(data)
55 numpy 与enumerate的等价的操作
data = np.arange(9).reshape(3,3)
for i,v in np.ndenumerate(data):
print(i,v)
57 二维数组内部 随机放置P个元素
n=10
p=5
data = np.zeros((n,n))
np.put(data,np.random.choice(range(n*n),p,replace=False),1)
print(data)
61 从数组中的给定值中找出最近值
data = np.random.uniform(-5,5,10)
data1 =0.5
n = data[np.abs(data-data1).argmin()]
69 获得点积的对角线
A = np.random.uniform(1,10,(5,5))
B = np.random.uniform(1,10,(5,5))
#法一
print(np.diag(np.dot(A,B)))
#法二
print(np.sum(A*B.T,axis=1))
72 数组中任意两行做交换
data = np.arange(25).reshape(5,5)
data[[1,0]]= data[[0,1]]
print(data)
80 找到一个数组中出现频率最高的值
data = np.random.randint(3,5,50)
print(data,np.bincount(data).argmax())