Numpy练习题100(1)

结合本人情况列出以下习题,并补充了新的函数知识点

10.从数组[1, 2, 0, 0, 4, 0]中找出非0元素的位置索引(★☆☆)

import numpy as np
a = [1,2,0,0,4,0]
b = np.nonzero(a)
print(b)

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

import numpy as np
a = np.eye(3,3)
print(a)

15. 创建一个2维数组,该数组边界值为1,内部的值为0 (★☆☆)

import numpy as np
a = np.ones(36).reshape((6,6))
print(a)
a[1:-1,1:-1] = 0
print(a)

16. 如何用0来填充一个数组的边界? (★☆☆)

import numpy as np
a = np.ones(36).reshape((6,6))
a = np.pad(a,((1,1),(1,1)),'constant')
print(a)

补充pad函数学习:Numpy学习——数组填充np.pad()函数的应用_o_Eagle_o的博客-CSDN博客_np.pad()

18. 创建一个5x5的矩阵,且设置值1, 2, 3, 4在其对角线下面一行**(★☆☆)

import numpy as np
a = np.ones(25).reshape((5,5))
b = [1,2,3,4]
print(np.diag(b,k = -1))

diag函数补充:https://www.jb51.net/article/212551.htm

20. 思考一下形状为(6, 7, 8)的数组的形状,且第100个元素的索引(x, y, z)分别是什么?**(★☆☆)

import numpy as np
a = np.unravel_index(100,(6,7,8))
print(a)

unravel_index函数补充:numpy 中 np.unravel_index 使用_gzh_kevin的博客-CSDN博客_np.unravel_index

21. 用tile函数创建一个8x8的棋盘矩阵**(★☆☆)

import numpy as np
a = np.tile([[1,0],[0,1]],(4,4))
print(a)

tile函数补充:np.tile()函数的详解_中南自动化学院“智能控制与优化决策“至渝的博客-CSDN博客_np.tile()函数

22. 对5x5的随机矩阵进行归一化 (★☆☆)

import numpy as np
a = np.random.random((5,5))
a_max = a.max()
a_min = a.min()
b = (a - a_min) / (a_max - a_min)
print(b)

归一化好像就是一个公式?数据的归一化(Normalization)、标准化(Standardization)_探索者v的博客-CSDN博客_中位数归一化


23. 创建一个dtype来表示颜色(RGBA) (★☆☆)

       = =目前看不懂

24. 一个5x3的矩阵和一个3x2的矩阵相乘,结果是什么?**(★☆☆)

import numpy as np
a = np.ones((5,3))
b = np.ones((3,2))
c = np.dot(a,b)
print(c)

np.dot  矩阵相乘

25. 给定一个一维数组把它索引从3到8的元素求相反数 (★☆☆)

import numpy as np
a = np.arange(11)
a[(2 < a) & (a <= 8)] = -1 * a[(2 < a) & (a <= 8)]
print(a)

26. 下面的脚本的结果是什么? (★☆☆)

29. 如何四舍五入一个浮点数组?

30. 如何找出两个数组公共的元素?

# np.intersect1d(Z1,Z2) 求得Z1和Z2数组的交集

33. 如何获得昨天,今天和明天的日期? (★☆☆)

import numpy as np
today = np.datetime64('today','D')
yestaday = today - np.timedelta64(1,'D')
tomorrow = today + np.timedelta64(1,'D')
print(yestaday,today,tomorrow)

datetime64和timedelta64函数:numpy.datetime64()日期函数_梦寐_的博客-CSDN博客_numpy.datetime64

34. 如何获得2016年七月的所有日期

import numpy as np
a = np.arange('2016-07','2016-08',dtype = 'datetime64[D]')
print(a)

35. 计算( (A+B)*-(A/2)),不使用复制

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

注意各基本计算函数

38. 创建一个函数生成器生成10个整数,用这个函数生成一个数组

import numpy as np
def data():
    for i in range(0,11):
        yield i
a = np.fromiter(data(),dtype = 'float',count = -1)
print(a)


# yield 的作用就是把一个函数变成一个 生成器generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator。
# 虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。
# 看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。


# fromiter(iterable,dtype,count = -1),从可迭代对象创建新的1维数组。
# iterable:可迭代对象。一个可迭代的对象,为数组提供数据。
# dtype:数据类型。返回数组的数据类型。
# count:int,可选。要从* iterable *中读取的项目数。 默认值为-1,这意味着所有数据都被读取。
# 返回:ndarray。输出数组。

39. 创建一个大小为10的向量, 值域为0到1,不包括0和1 (★★☆)

import numpy as np
a = np.linspace(0,1,12)[1:-1]
print(a)

#linespace函数创建等差数列,前两个参数分别是数列的开头与结尾。如果写入第三个参数,可以制定数列的元素个数

41. 对一个小数组进行求和有没有办法比np.sum更快? (★★☆)

import numpy as np
a = np.arange(10)
print(np.sum(a))
print(np.add.reduce(a))

# np.sum与np.add.reduce两者的功能是一样的,对数组进行进行求和。
# 但是两者的性能似乎是完全不同的:对于相对较小的数组大小而言。add.reduce大约快两倍。对于较大的数组大小,差别似乎消失了

42. 如何判断两随机数组相等 (★★☆)

import numpy as np
a = np.random.randint(0,10,5)
b = np.random.randint(0,10,5)
print(a,b)
equal = np.allclose(a,b)
equal1 = np.array_equal(a,b)
print(equal,equal1)

43. 把数组变为只读 (★★☆)

import numpy as np
a = np.arange(10)
print(a)
a.flags.writeable = False
a[1] = 3
print(a)

46. 创建一个结构化数组,其中x和y坐标覆盖[0, 1] X [1, 0]区域

?

48. 打印每个numpy 类型的最小和最大可表示值

?

49. 如何打印数组中所有的值?

import numpy as np
np.set_printoptions(threshold = 5)
a = np.ones((16,16))
print(a)

# threshold : int, optional,当数组数目过大时,设置显示几个数字;threshold=np.nan意思是输出数组的时候完全输出

50. 如何在数组中找到与给定标量接近的值?

import numpy as np
a = np.random.uniform(0,1,10)
print(a)
Z = 0.5
print(a[np.argmin(abs(a - Z))])

argmin()取该数组中最小值的索引值

51. 创建表示位置(x, y)和颜色(r, g, b, a)的结构化数组

?

import numpy as np
a = {'names':('x','y','r','g','b'),'formats':('float','float','float','float','float')}
print(a)
b = np.rec.array([(12,12,2,3,5)],dtype = a)
print(b.g)

通过指定字典的 names和formats 去实现,使用 numpy.rec.array()创建赋值

一文彻底搞懂numpy的结构化数组——structured array_LoveMIss-Y的博客-CSDN博客_结构化数组

52. 思考形状为(100, 2)的随机向量,求出点与点之间的距离 (★★☆)

55. numpy数组枚举(enumerate)的等价操作?

import numpy as np
a = np.arange(9).reshape(3,3)
print(a)
for index,value in np.ndenumerate(a):
    print(index,value)

np.ndenumerate返回numpy数组的索引和值

你可能感兴趣的:(Python,python,开发语言)