Python_Numpy100题上

Python_Numpy100题上

Python_Numpy100题下

参考: https://github.com/rougier/numpy-100

1.导入名为np的numpy包(★☆☆)

import numpy as np

2.打印numpy版本和配置(★☆☆)

print(np.__version__)
np.show_config()

Python_Numpy100题上_第1张图片

3.创建大小为10的空向量(★☆☆)

temp = np.zeros(10)
print(temp)

Python_Numpy100题上_第2张图片

4.如何找到任意数组的内存大小(★☆☆)

Z = np.zeros((10,10))
print(Z.size)
print(Z.itemsize)
print("%d bytes" % (Z.size * Z.itemsize))

Python_Numpy100题上_第3张图片

5.如何从命令行 获取numpy add函数的文档(★☆☆)¶

np.info(np.add)

Python_Numpy100题上_第4张图片

6.创建一个大小为10但第五个值为1的空向量(★☆☆)

temp = np.zeros(10)
temp[5] = 1
print(temp)

Python_Numpy100题上_第5张图片

7.创建一个值介于10到49之间的向量(★☆☆)

temp = np.arange(10,50)
print(temp)

Python_Numpy100题上_第6张图片

8.反转向量(第一个元素变为最后一个)(★☆☆)

temp = np.arange(10,50)
temp = temp[::-1]
print(temp)

Python_Numpy100题上_第7张图片

9.创建一个3x3矩阵,其值范围为0到8(★☆☆)

#法一:
#temp = np.arange(9)
#temp = temp.reshape(3,3)
#print(temp)
#法二:
temp = np.arange(9).reshape(3,3)
print(temp)

Python_Numpy100题上_第8张图片
10.从[1,2,0,0,4,0]中找出非零元素的指数(★☆☆)

temp = np.nonzero([1,2,0,0,4,0])
print(temp)

Python_Numpy100题上_第9张图片

11.创建3x3单位矩阵(★☆☆)

temp = np.eye(3,3)
print(temp)

Python_Numpy100题上_第10张图片

12.创建具有随机值的3x3x3数组(★☆☆)

temp = np.random.random((3,3,3))
print(temp)

Python_Numpy100题上_第11张图片

13.创建一个带有随机值的10x10数组,并找到最小值和最大值(★☆☆)

temp = np.random.random((10,10))
print(temp)
max=np.max(temp)
min=np.min(temp)
print(max,min)

Python_Numpy100题上_第12张图片

14.创建一个大小为30的随机向量,并找到平均值(★☆☆)

temp = np.random.random(30)
print(temp)
avg0=np.average(temp)#可算加权
avg1=np.mean(temp)
print(avg0,avg1)

Python_Numpy100题上_第13张图片

15.创建一个二维数组,边框上为1,内部为0(★☆☆)

temp = np.ones((10,10))
temp[1:-1, 1:-1] = 0
print(temp)

Python_Numpy100题上_第14张图片

16.如何在现有数组周围添加边框(用0填充)(★☆☆)

Z = np.ones((5,5))
Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
print(Z)

# Using fancy indexing
Z[:, [0, -1]] = 0
Z[[0, -1], :] = 0
print(Z)

Python_Numpy100题上_第15张图片

17.下列表达式的结果是什么(★☆☆)

print(0 * np.nan)
print(np.nan == np.nan)
print(np.inf > np.nan)
print(np.nan - np.nan)
print(np.nan in set([np.nan]))
print(0.3 == 3 * 0.1)

Python_Numpy100题上_第16张图片

18.创建一个5x5矩阵,其值在对角线下方1、2、3、4(★☆☆)

Z = np.diag(1+np.arange(4),k=-1)
print(Z)

Python_Numpy100题上_第17张图片
Python_Numpy100题上_第18张图片

19.创建一个8x8矩阵并用棋盘格填充(★☆☆)

Z = np.zeros((8,8),dtype=int)
Z[1::2,::2] = 1#从第一行,到最后一行,中间间隔两行;中间间隔两列
Z[::2,1::2] = 1
print(Z)

Python_Numpy100题上_第19张图片

20.考虑一个(6,7,8)形状数组,第100个元素的索引(x,y,z)是多少(★☆☆)

print(np.unravel_index(99,(6,7,8)))

在这里插入图片描述
Python_Numpy100题上_第20张图片
https://www.cnblogs.com/lucas-zhao/p/11792365.html

21.使用tile函数创建棋盘8x8矩阵(★☆☆)

temp = np.array([[0,1],[1,0]])
print(temp)
Z = np.tile(temp, (4,4))#将数组沿着X轴Y轴都扩大4倍
print(Z)

Python_Numpy100题上_第21张图片

22.归一化5x5随机矩阵(★☆☆)

temp = np.random.random((5,5))
print(temp)
#np.std():计算全局标准差
Z = (temp-np.mean(temp))/np.std(temp)
print(Z)

Python_Numpy100题上_第22张图片

23.创建一个自定义数据类型,将颜色描述为四个无符号字节(RGBA)(★☆☆)

color = np.dtype([("r", np.ubyte),
                  ("g", np.ubyte),
                  ("b", np.ubyte),
                  ("a", np.ubyte)])
print(color)

在这里插入图片描述

24.将5x3矩阵乘以3x2矩阵(实矩阵积)(★☆☆)

print(np.dot(np.random.random((5,3)),np.random.random((3,2))))
print(np.ones((5,3)) @ np.ones((3,2)))

Python_Numpy100题上_第23张图片

25.给定一个1D数组,求3到8之间的所有元素的反(★☆☆)

# Author: Evgeni Burovski

Z = np.arange(11)
Z[(3 < Z) & (Z < 8)] *= -1
print(Z)

在这里插入图片描述

26.以下脚本的输出是什么(★☆☆)

import numpy as np
# Author: Jake VanderPlas
#后面-1,代表求和后减1
print(sum(range(5),-1))
from numpy import *
print(sum(range(5),-1))

在这里插入图片描述

27.考虑一个整数向量Z,以下哪一个表达式是合法的(★☆☆)

#未打印的不能输出
Z = np.random.random(5)
print(Z**Z)
#2 << Z >> 2
print(Z <- Z)
print(1j*Z)
print(Z/1/1)
#ZZ

Python_Numpy100题上_第24张图片

28.下列表达式的结果是什么(★☆☆)

print(np.array(0) / np.array(0))
print(np.array(0) // np.array(0))
print(np.array([np.nan]).astype(int).astype(float))

在这里插入图片描述

29.如何将浮点数组从零取整(★☆☆)

# Author: Charles R Harris

Z = np.random.uniform(-10,+10,10)
print(Z)
print(np.copysign(np.ceil(np.abs(Z)), Z))

# More readable but less efficient
print(np.where(Z>0, np.ceil(Z), np.floor(Z)))

在这里插入图片描述

30.如何在两个数组之间找到公共值(★☆☆)

Z1 = np.random.randint(0,10,10)
Z2 = np.random.randint(0,10,10)
print(Z1,Z2)
print(np.intersect1d(Z1,Z2))

在这里插入图片描述

31.如何忽略所有numpy警告(不推荐)(★☆☆)

# Suicide mode on
defaults = np.seterr(all="ignore")
Z = np.ones(1) / 0

# Back to sanity
_ = np.seterr(**defaults)

# Equivalently with a context manager
with np.errstate(all="ignore"):
    np.arange(3) / 0

32. Is the following expressions true? (★☆☆)

print(np.sqrt(-1) == np.emath.sqrt(-1))

在这里插入图片描述

33.昨天、今天和明天的日期怎么算(★☆☆)

yesterday = np.datetime64('today') - np.timedelta64(1)
today     = np.datetime64('today')
tomorrow  = np.datetime64('today') + np.timedelta64(1)

print(yesterday,today,tomorrow)

在这里插入图片描述

34.如何获取2016年7月对应的所有日期(★★☆)

Z = np.arange('2016-07', '2016-08', dtype='datetime64[D]')
print(Z)

Python_Numpy100题上_第25张图片

35.如何计算((A+B)*(-A/2))到位(无拷贝)(★★☆)

A = np.ones(3)*1
B = np.ones(3)*2
print(A,B)
np.add(A,B,out=B)
print(A,B)
np.divide(A,2,out=A)
print(A,B)
np.negative(A,out=A)
print(A,B)
np.multiply(A,B,out=A)
print(A,B)

Python_Numpy100题上_第26张图片

36.使用4种不同的方法提取正数随机数组的整数部分(★★☆)

Z = np.random.uniform(0,10,10)

print(Z - Z%1)
print(Z // 1)
print(np.floor(Z))
print(Z.astype(int))
print(np.trunc(Z))

Python_Numpy100题上_第27张图片

37.创建一个5x5矩阵,行值从0到4(★★☆)

Z = np.zeros((5,5))
Z += np.arange(5)#对行操作
print(Z)

# without broadcasting
Z = np.tile(np.arange(0, 5), (5,1))
print(Z)

Python_Numpy100题上_第28张图片

38.考虑一个生成10个整数的生成器函数,并用它来构建一个数组(★☆☆)

def generate():
    for x in range(10):
        yield x
Z = np.fromiter(generate(),dtype=float,count=-1)
print(Z)

在这里插入图片描述

39.创建一个大小为10的向量,其值范围为0到1,两者都排除在外(★★☆)

#创建11个数,但是截取后10个数
Z = np.linspace(0,1,11,endpoint=False)[1:]
print(Z)

在这里插入图片描述

40.创建一个大小为10的随机向量并对其排序(★★☆)

temp = np.random.random(10)
print(temp)
temp = np.sort(temp)
print(temp)

Python_Numpy100题上_第29张图片

41.如何比np.sum更快地求一个小数组的和(★★☆)

# Author: Evgeni Burovski

Z = np.arange(10)
np.add.reduce(Z)
print(Z)

在这里插入图片描述

42.考虑两个随机数组A和B,检查它们是否相等(★★☆)

A = np.random.randint(0,2,5)
B = np.random.randint(0,2,5)

# Assuming identical shape of the arrays and a tolerance for the comparison of values
equal = np.allclose(A,B)
print(equal)

# Checking both the shape and the element values, no tolerance (values have to be exactly equal)
equal = np.array_equal(A,B)
print(equal)

在这里插入图片描述

43.使数组不可变(只读)(★★☆)

Z = np.zeros(10)
Z.flags.writeable = False
Z[0] = 1

Python_Numpy100题上_第30张图片

44.考虑一个表示笛卡尔坐标的随机10x2矩阵,将它们转换为极坐标(★★☆)

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)

Python_Numpy100题上_第31张图片

45.创建大小为10的随机向量,并将最大值替换为0(★★☆)

Z = np.random.random(10)
print(Z)
Z[Z.argmax()] = 0
print(Z)

Python_Numpy100题上_第32张图片

46.创建一个结构数组,x和y坐标覆盖[0,1]x[0,1]区域(★★☆)

Z = np.zeros((5,5), [('x',float),('y',float)])
Z['x'], Z['y'] = np.meshgrid(np.linspace(0,1,5),
                             np.linspace(0,1,5))
print(Z)

Python_Numpy100题上_第33张图片

47、给定两个阵列,x和y,构造柯西矩阵C(CIJ=1/(XI-YJ))★★☆)

# Author: Evgeni Burovski

X = np.arange(8)
Y = X + 0.5
C = 1.0 / np.subtract.outer(X, Y)
print(np.linalg.det(C))

在这里插入图片描述

48.打印每个numpy标量类型的最小和最大可表示值(★★☆)

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)

Python_Numpy100题上_第34张图片

49.如何打印数组的所有值(★★☆)

np.set_printoptions(threshold=float("inf"))
Z = np.zeros((40,40))
print(Z)

Python_Numpy100题上_第35张图片

50.如何在向量中找到最接近的值(到给定的标量)(★★☆)

Z = np.arange(100)
v = np.random.uniform(0,100)
index = (np.abs(Z-v)).argmin()
print(Z[index])

在这里插入图片描述

你可能感兴趣的:(Python学习笔记,python,numpy,random,数据可视化)