numpy练习100题(1-25)

2019-12-21  本文已影响0人  海盗船长_coco
  1. 导入numpy库并简写为 np
import numpy as np
  1. 打印numpy的版本和配置说明
print(np.__version__)
print(np.show_config())
  1. 创建一个长度为10的空向量
z = np.zeros(10)
  1. 如何找到任何一个数组的内存大小?(提示: size, itemsize) itemsize返回字节数,int为4字节,float为8字节
z = np.zeros((10, 10), dtype=np.int)
malloc = z.size * z.itemsize
  1. 如何从命令行得到numpy中add函数的说明文档?(提示: np.info)
np.info(np.add)
  1. 创建一个长度为10并且除了第五个值为1的空向量(提示: array[4])
z = np.zeros(10)
z[4] = 1
  1. 创建一个值域范围从10到49的向量(提示: np.arange)
z = np.arange(10, 49 + 1)
  1. 反转一个向量(第一个元素变为最后一个)(提示: array[::-1])
b = z[::-1]
  1. 创建一个 3x3 并且值从0到8的矩阵(提示: reshape)
matrix = np.arange(0, 9).reshape(3, 3)
  1. 找到数组[1,2,0,0,4,0]中非0元素的位置索引(提示: np.nonzero)
array = np.array([1, 2, 0, 0, 4, 0])
index = np.where(array != 0)
index2 = np.nonzero(array)
  1. 创建一个 3x3 的单位矩阵(提示: np.eye)
matrix = np.eye(3)
  1. 创建一个 3x3x3的随机数组(提示: np.random.random)
array1 = np.random.rand(3, 3, 3)
array2 = np.random.random((3, 3, 3))
  1. 创建一个 10x10 的随机数组并找到它的最大值和最小值
array = np.random.random((10, 10))
max_value = np.max(array)
min_value = np.min(array)
Zmin, Zmax = array.min(), array.max()
  1. 创建一个长度为30的随机向量并找到它的平均值
array = np.random.random(30)
mean1 = np.average(array)
mean2 = array.mean()

15.创建一二维数组,其中边界值为1,其余值为0(提示: array[1:-1, 1:-1])

'''自实现 for循环时间复杂度更高
array=np.ones((4,5))
m,n=array.shape
for i in range(1,m-1):
    for j in range(1,n-1):
        array[i,j]=0
print(array)
'''
Z = np.ones((4, 5))
Z[1:-1, 1:-1] = 0
  1. 对于一个存在在数组,如何添加一个用0填充的边界?(提示: np.pad)
Z = np.ones((4, 5))
newZ = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
  1. 以下表达式运行的结果分别是什么?(提示: NaN = not a number, inf = infinity)
r1 = 0 * np.nan  # nan
r2 = (np.nan == np.nan)  # False   ==是值判断,由于np.nan没有值,所以不能值判断
r3 = (np.nan is np.nan)  # True  is判断是否为同一个对象
r4 = np.inf > np.nan  # False
r5 = np.nan - np.nan  # nan
r6 = (0.3 == 3 * 0.1)  # False 永远不要用==去比较浮点数,计算机实际储存的二进制浮点数近似。十进制的0.1不能精确表示为二进制小数
# print(0.1+0.2)#0.30000000000000004,翻译的网址https://blog.csdn.net/Aven_n/article/details/103444340
  1. 创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置(提示: np.diag)
matrix = np.zeros((5, 5))
'''
for i in range(len(matrix)):
    matrix[i+1:,i]=i+1
print(matrix)
'''
Z = np.diag(1 + np.arange(4), k=-1)
  1. 创建一个8x8 的矩阵,并且设置成棋盘样式(提示: array[::2])
matrix = np.zeros((8, 8))
matrix[1::2, ::2] = 1
matrix[::2, 1::2] = 1
  1. 考虑一个 (6,7,8) 形状的数组,其第100个元素的索引(x,y,z)是什么?(提示: np.unravel_index)
array = np.random.random((6, 7, 8))  # [1,5,4]  1*7*8+5*8+4=100
index = np.unravel_index(100, (6, 7, 8))  # 返回下标
  1. 用tile函数去创建一个 8x8的棋盘样式矩阵(未想到)
Z = np.tile(np.array([[0, 1], [1, 0]]), (4, 4))
  1. 对一个5x5的随机矩阵做归一化(提示: (x - min) / (max - min))
Z = np.random.random((5, 5))
Zmax, Zmin = Z.max(), Z.min()
Z = (Z - Zmin) / (Zmax - Zmin)
  1. 创建一个将颜色描述为(RGBA)四个无符号字节的自定义dtype?(提示: np.dtype)
color = np.dtype([("r", np.ubyte, 1),
                  ("g", np.ubyte, 1),
                  ("b", np.ubyte, 1),
                  ("a", np.ubyte, 1)])
  1. 一个5x3的矩阵与一个3x2的矩阵相乘,实矩阵乘积是什么?(提示: np.dot)
matrix1=np.random.random((5,3))
matrix2=np.random.random((3,2))
result=matrix1.dot(matrix2)
  1. 给定一个一维数组,对其在3到8之间的所有元素取反(提示: >, <=)
Z = np.arange(11)
Z[(3 < Z) & (Z <= 8)] *= -1
print(Z)
上一篇下一篇

猜你喜欢

热点阅读