![a51168d0d91c938ba8a23095a75e2c4e.png](https://i-blog.csdnimg.cn/blog_migrate/471156044ce45ca2f2ba26cec6dc210c.jpeg)
NumPy是Python语言的扩展库,支持许多高维数组和矩阵的操作。此外,它还为数组操作提供了许多数学函数库。机器学习涉及到对数组的大量转换和操作,这使得NumPy成为必不可少的工具之一。
下面的100个练习都是从numpy邮件列表、stack overflow和numpy文档中收集的。
1.以np的名称导入numpy包(★☆☆)
import numpy as np
2.打印numpy版本和配置(★☆☆)
print(np.__version__)np.show_config()
3.创建一个大小为10的空向量(★☆☆)
Z = np.zeros(10)print(Z)
4.如何找到任何数组的内存大小(★☆☆)
Z = np.zeros((10,10))print("%d bytes" % (Z.size * Z.itemsize))
5.如何从命令行获取numpy add函数的文档?(★☆☆)
%run `python -c "import numpy; numpy.info(numpy.add)"`
6.创建一个大小为10的空矢量,第五个值为1(★☆☆)
Z = np.zeros(10)Z[4] = 1print(Z)
7.创建一个向量,其值的范围是10到49(★☆☆)
Z = np.arange(10,50)print(Z)
8.反转向量(第一个元素变为最后一个)(★☆☆)
Z = np.arange(50)Z = Z[::-1]print(Z)
9.创建一个从0到8的3 * 3矩阵(★☆☆)
x = np.arange(0,9).reshape(3,3)print(x)
10.查找来自[1,2,0,0,4,0]的非零元素的索引(★☆☆)
nz = np.nonzero([1,2,0,0,4,0])print(nz)
11.创建一个3 * 3的单位矩阵(★☆☆)
Z = np.eye(3)print(Z)
12.创建一个具有随机值的3x3x3数组(★☆☆)
Z = np.random.random((3,3,3))print(Z)
13.创建一个具有随机值的10x10数组,并找到最小值和最大值(★☆☆)
Z = np.random.random((10,10))Zmin, Zmax = Z.min(), Z.max()print(Zmin, Zmax)
14.创建一个大小为30的随机向量,并找到平均值(★☆☆)
Z = np.random.random(30)m = Z.mean()print(m)
15.创建一个边界为1,内部为0的二维数组(★☆☆)
Z = np.ones((10,10))Z[1:-1,1:-1] = 0print(Z)
16.如何在现有数组周围添加边框(用0填充)?(★☆☆)
Z = np.ones((5,5))Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)print(Z)
17.以下表达式的结果是什么?(★☆☆)
0 * np.nannp.nan == np.nannp.inf > np.nannp.nan - np.nannp.nan in set([np.nan])0.3 == 3 * 0.1print(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)
18.创建一个5x5矩阵,对角线正下方的值为(1、2、3、4)(★☆☆)
Z = np.diag(1+np.arange(4),k=-1)print(Z)
19.创建一个8x8矩阵,并用棋盘图案填充它(★☆☆)
Z = np.zeros((8,8),dtype=int)Z[1::2,::2] = 1Z[::2,1::2] = 1print(Z)
20.考虑一个形状为(6,7,8)的数组,第100个元素的索引(x,y,z)是什么?(★☆☆)
print(np.unravel_index(99,(6,7,8)))
21.使用tile函数创建一个棋盘格8x8矩阵(★☆☆)
Z = np.tile( np.array([[0,1],[1,0]]), (4,4))print(Z)
22.归一化一个5x5随机矩阵(★☆☆)
Z = np.random.random((5,5))Z = (Z - np.mean (Z)) / (np.std (Z))print(Z)
23.创建一个自定义dtype,将颜色描述为四个unsigned bytes(RGBA)(★☆☆)
color = np.dtype([("r", np.ubyte, 1), ("g", np.ubyte, 1), ("b", np.ubyte, 1), ("a", np.ubyte, 1)])
24.将5x3矩阵乘以3x2矩阵(实矩阵乘积)(★☆☆)
Z = np.dot(np.ones((5,3)), np.ones((3,2)))print(Z)# Alternative solution, in Python 3.5 and aboveZ = np.ones((5,3)) @ np.ones((3,2))print(Z)
25.给定一维数组,将3到8之间的所有元素乘以-1。(★☆☆)
Z = np.arange(11)Z[(3 < Z) & (Z < 8)] *= -1print(Z)
26.以下脚本的输出是什么?(★☆☆)
print(sum(range(5),-1))from numpy import *print(sum(range(5),-1))
27.考虑一个整数向量Z,以下哪个表达式是合法的?(★☆☆)
Z**Z2 << Z >> 2Z ZZ**Z2 << Z >> 2Z Z
28.以下表达式的结果是什么?
np.array(0) / np.array(0)np.array(0) // np.array(0)np.array([np.nan]).astype(int).astype(float)print(np.array(0) / np.array(0))print(np.array(0) // np.array(0))print(np.array([np.nan]).astype(int).astype(float))
29.如何round away from zero一个浮点数组(★☆☆)
Z = np.random.uniform(-10,+10,10)print (np.copysign(np.ceil(np.abs(Z)), Z))
30.如何找到两个数组之间