100 numpy exercises 前50
2016-08-06 20:40
162 查看
想开始deeplearn的课程,但是提示需要先熟悉numpy和theano的使用。没办法,看完numpy的文档的基础部分就开始对着github上的题目打,虽然很多没经过过多的思考,但是算最快入门的了,很多东西打着打着就熟了。
github源地址 https://github.com/rougier/numpy-100/blob/master/100%20Numpy%20exercises.md
github源地址 https://github.com/rougier/numpy-100/blob/master/100%20Numpy%20exercises.md
1.导入numpy包,别名为np
import numpy as np
2.打印numpy的版本号和配置项
print(np.__version__) np.show_config()
3.新建一个大小为10的空向量
z = np.zeros(10)
4.返回数组的内存空间大小
z = np.zeros((10, 10)) print(z.size * z.itemsize)
5.获取add函数的文档
np.info(np.add)
6.新建一个大小为10的空向量,第五个值为1
z = np.zeros(10) z[4] = 1
7.新建一个范围为(10,49)的向量
z = np.arange(10, 50)
8.输出一个向量的逆序
z = np.arange(50) z = z[::-1]
9.新建一个3*3的矩阵,范围为0到8
z = np.arange(9).reshape(3, 3)
10.从[1, 2, 0, 0, 4, 0]中找到非0的下标
z = np.nonzero([1,2,0,0,4,0])
11.新建一个3*3的单位矩阵
z = np.eye(3)
12.新建一个3*3*3的随机值
z = np.random.random((3, 3, 3))
13.新建一个10*10的随机矩阵,找到最大值和最小值
z = np.random.random((10, 10)) zmin, zmax = z.min(), z.max()
14.新建一个大小为30的随机向量,找到平均值
z = np.random.random(30) zmean = z.mean()
15.新建一个二维矩阵,边界为1,中心为0
z = np.zeros((10, 10)) z[0, :], z[-1, :] = 1, 1 z[:, 0], z[:, -1] = 1, 1
16.在已知数组四周新加值为0的边
z = np.ones((5, 5)) z = np.pad(z, pad_width=1, mode='constant', constant_values=0)
17.求下列运算的结果
0 * np.nan # nam np.nan == np.nan #False np.inf > np.nan #False np.nan - np.nan #nan 0.3 == 3 * 0.1 #False
18.新建一个5*5的矩阵,[1, 2, 3, 4]在对角线的下面
z = np.diag(np.arange(1,5), k=-1)
19.新建一个8*8的矩阵的西洋棋盘
z = np.zeros((8, 8)) z[::2, ::2], z[1:;2, 1::2] = 1, 1
20.对于一个(6, 7, 8)的数组,第100个元素下表
np.unrevel_index(100, (6,7,8))
21.用tile函数新建一个8*8棋盘
z = np.tile(np.array([1,0], [0,1]), (4, 4))
22.归一化5*5的随机矩阵
z = np.random.random((5,5)) zmax, zmin = z.max(), z.min() z = (z - zmin)/(zmax - zmin)
23.新建一个dtype类型用来描述一个颜色(RGBA)
color = np.dtype([("r", np.ubyte, 1),("g", np.ubyte, 1),("b", np.byte,1), ("a", np.ubyte, 1)])
24.矩阵5*3点乘矩阵3*2
z = np.dot(np.ones((5,3)), np.ones((3,2)))
25.给定一个一维数组,3和8内的取负数
z = np.arange(10) z[(Z >= 3) & (Z <=8)] *= -1
26.下列式子的输出
sum(range(5), -1) #9 = 10 - 1 np.sum(range(5), -1) #10, -1是维度
27.下列的表达式哪个合法
z**z 2 << z >> 2 z < -z 1j*z z/1/1 z < z > z # error
28.下列表达式的结果
np.array(0) / np.array(0) #warning, nan np.array(0) // np.array(0) #warning, 0 np.array([np.nan]).astype(int).astype(float) # array([-2.14748365e+09])
29.向远离0取整
z = np.random.uniform(-10, 10, 10) #生成-10到10的10个数 np.trunc(z + np.copysign(0.5, z)) #copysign函数往前面参数赋值符号,trunc向0取整
30.两数组找共同值
z1 = np.random.randint(0, 10, 10) z2 = np.random.randint(0, 10, 10) np.intersect1d(z1, z2)
31.屏蔽numpy的警告
defaults = np.seterr(all="ignore") z = np.ones(1)/0 _ = np.seterr(**defaults)
32.下列表达式对吗
np.sqrt(-1) == np.emath.sqrt(-1) #Warning, Flase
33.怎样获得昨天,今天和明天
yesterday = np.datetime64('today', 'D) - np.timedelta(1, 'D') # D是day today = np.datetime64('today', 'D') tomorrow = np.datetime64('today', 'D') + np.timedelta(1, 'D')
34.获得20167月的月份
z = np.arange('2016-07', '2016-08', dtype='datetime64[D]')
35.怎样在没有额外内存计算 ((A+B)*(-A/2))
A = np.ones(3)*1 B = np.ones(3)*2 C = np.ones(3)*3 np.add(A, B, out=B) np.divide(A, 2, out=A) np.negative(A, out=A) np.multiply(A, B, out=A)
36.用5种方法取整
z = np.random.uniform(0, 10, 10) z - z%1 np.floor(z) np.ceil(z) - 1 #ceil大于或等于的整数 z.astype(int) np.trunc(z) #靠近0方向
37.新建一个5*5矩阵,横向从0到4
z = np.tile([0,1,2,3,4], (5,1))
38.考虑一个生成器能生成10个整数,而且用它构建一个数组
def generate() : for x in range(10) : yield x #迭代器 # fromiter函数,生成1维数组,count=-1默认送生成器读取所有 z = np.fromiter(generate(), dtype=float, count=-1)
39.新建一个大小为10的向量值的范围为0到1,排除头尾
z = np.linspace(0, 1, 12, endpoint=True)[1:-1]
40.新建一个大小为10的随机向量并且排序
z = np.random.random(10) z.sort()
41.怎样为一个小数组求和,速度比np.sum快
z = np.arange(10) np.add.reduce(z) #reduce函数能降一维
42.考虑两个数组,看他们是否相等
a = np.random.randint(0, 2, 5) b = np.random.randint(0, 2, 5) equal = np.allclose(a, b)
43.新建一个只读数组
z = np.zeros(10) z.flags.writeable = False z[0] = 1 # error
44.把一个10*2的笛卡尔坐标转换成极坐标
z = np.random.random((10, 2)) x, y = z[:, 0], z[:, 1] r = np.sqrt(x**2 + y**2) t = np.arctan2(y, x)
45.新建一个大小为10的向量,最大值用0代替
z = np.random.random(10) z[z.argmax()] = 0
46.新建一个用x和y坐标表示覆盖[1,0]*[0,1]区域的网格
z = np.zeros((5,5), ['x', float), ('y', float)]) # x方向0到1, y方向0到1,x和y组成网格 z['x'], z['y'] = np.meshgrid(np.linspace(0,1,5), np.linspace(0,1,5))
47.给定两个数组,构造柯西矩阵 Cij=1/(xi-yi)
x = np.arange(8) y = x + 0.5 c = 1.0 / np.subtract.outer(x, y) # outer: y=x-y print(np.linalg.dect(c)) #.dec: 计算行列式
48.打印
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)
49.怎样输出一个数组的所有值
np.set_printoptions(threshold=np.nan) z = np.zeros((16, 16))
50.怎样找到一个数组和给定点最近的值
z = np.arange(100) v = np.random.uniform(0, 100) index = (np.abs(z-v).argmin()) print(z[index])
相关文章推荐
- 100 numpy exercises 后50
- 交易目标变更通知【100】-->【50】
- 50-100
- 生成100个100~50之间的随机数 一行一个数
- 习题 5.7 求k=1,k到100的相加和,k平方到50的相加和,1/k到10的相加和。
- 同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1K的方波
- 使用线程1秒钟显示一个50到100的随机数
- 程序员面试题精选100题(50)-树的子结构.
- Win50扩100,共享data卷
- 中国排名前100的IT公司及中国通信企业综合实力50强(转)
- 运动跟踪 Visual Tracker Benchmark OTB-100 OTB-50 评价 使用
- Leetcode练习-Roman to Integer"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1
- 教你如何各种年份的20,50,100人民币真伪!
- 今天开始学Java 给你六种面额 1、5、10、20、50、100 元的纸币
- Edittext限制输入汉字50英文100
- 100-50
- [微软面试100题]41-50
- c语言:∑k(k取[1,100])+∑k^2(k取[1,50])+∑1/k(k取[1,10])的和
- 教你如何各种年份的20,50,100人民币真伪!
- 习题 1.10 循环 50到100的和