NumPy的使用

2019.3.1 星期五 多云 biolearn

创建数组

#创建数组
my_array = np.array([1, 2, 3, 4, 5])

#创建全为 0 或者 1 的数组
my_array = np.zeros((2,5))  #(2,5) 表示创建 2 行 5 列值全为 0 的数组
my_array = np.ones((5)) # 创建 1 行 5 列值全为 1 的数组

#创建全为某个常数的数组
my_array = np.full((2,2), 7) # 创建 2 行 2 列,值全为 7 的数组

#创建对角矩阵
my_array = np.eye(2) # 创建 2 * 2维的对角矩阵

#创建随机数组
my_array = np.random.rand(5) # 随机函数,值均在 0-1 之间
my_array = np.random.rand(2,5) # 2 行 5 列

#np.arange
my_array = np.arange(5) # 结果为 [0 1 2 3 4],默认以 1 为步长,创建数组
my_array = np.arange(2,6) # 结果 [2 3 4 5]
my_array = np.arange(0,10,2) # 以 2 为步长创建数组,结果为 [0 2 4 6 8]

#np.linspace
my_array = np.linspace(0,3,5) # 0-3 均匀的分为5个数,结果为 [0. 0.75 1.5 2.25 3.]

数组属性

a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28 ,29, 30],
              [31, 32, 33, 34, 35]])

print(type(a))      # 数据的类型,结果 
print(a.dtype)      # 字符类型,结果 int64
print(a.size)       # 数组的大小,结果 25
print(a.shape)      # 数组的形状,结果 (5, 5)
print(a.itemsize)   # 每项占用的字节数,结果 8
print(a.ndim)       # 数组的维数,因 a 是二维数组,结果 2
print(a.nbytes)     # 数组中的所有数据消耗掉的字节数,结果 200

数组的基本操作

加减乘除四则运算

a = np.arange(25)
a = a.reshape((5, 5)) # 将 1 * 25的一维数组变成 5 * 5的两位数组

b = np.linspace(0,50,25)
b = b.reshape((5,5))

print(a + b)    #相对项元素相加
print(np.add(a,b))

print(a - b)    #相减
print(np.subtract(a,b))

print(a * b)    #相乘
print(np.multiply(a,b))

print(a / b)    #相除
print(np.divide(a,b))

print(a ** 2)   #平方
print(np.sqrt(a)) #开方

print(a < b)    #若符合条件,则布尔值为 true,反之为 False
print(a > b)

print(a.dot(b)) #矩阵相乘

#特殊的运算符
# dot, sum, min, max, cumsum
a = np.arange(10)

print(a.sum())      # 总和,结果 45
print(np.sum(a, axis=0))  # Compute sum of each column
print(np.sum(a, axis=1))  # Compute sum of each row

print(a.min())      # 最小值,结果 0
print(a.max())      # 最大值,结果 9
print(a.cumsum())   # 累加,从左到右依次累加,输出每次相加的结果,结果为 [ 0  1  3  6 10 15 21 28 36 45]

#装置矩阵
x = np.array([[1,2], [3,4]])
print(x.T)  # 装置

数组索引

#单个元素索引
x = np.arange(10)   # [0 1 2 3 4 5 6 7 8 9]
x[2]    # 结果 2
x[-2]   # 结果 8

#二维数组的索引
x.shape = (2,5)     # [[0 1 2 3 4]
                    # [5 6 7 8 9]]
x[1,3]  # 结果 8
x[1,-1] # 结果 9
x[0] # [0 1 2 3 4]

#花式索引
a = np.arange(0, 100, 10)
indices = [1, 5, -1]
b = a[indices]
print(a) # >>>[ 0 10 20 30 40 50 60 70 80 90]
print(b) # >>>[10 50 90]

#布尔值索引
a = np.arange(0, 100, 10)   # [ 0 10 20 30 40 50 60 70 80 90]
b = a < 50
print(a[b]) # [ 0 10 20 30 40]

数组切片

#切片操作
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])

print(a[0,:])   # 第一行,[1 2 3 4]
print(a[:,0])   # 第一列,[1 5 9]

print(a[1:3,2]) # 第 2-3 行,第 3 列,[7 11]
  • 多维数组的切片

矩阵和向量

#生成矩阵
A = np.array([[1,-1,2],[3,2,0]])
#生成单列的数组
v = np.array([[2],[1],[3]])
v = np.transpose(np.array([[2,1,3]]))      # 使用转置

#矩阵乘法或矩阵向量乘法
w = np.dot(A,v)

#用numpy求解方程组    A x = b
A = np.array([[2,1,-2],[3,0,1],[1,1,-1]])
b = np.transpose(np.array([[-3,5,-2]])

x = np.linalg.solve(A,b)
                 

进阶篇

2、如何创建一维数组?
3. 如何创建一个布尔数组?
4. 如何从一维数组中提取满足指定条件的元素?
5. 如何用numpy数组中的另一个值替换满足条件的元素项?
6. 如何在不影响原始数组的情况下替换满足条件的元素项?
7. 如何改变数组的形状?
8. 如何垂直叠加两个数组?
9. 如何水平叠加两个数组?
10. 如何在无硬编码的情况下生成numpy中的自定义序列?
11. 如何获取两个numpy数组之间的公共项?
12. 如何从一个数组中删除存在于另一个数组中的项?
13. 如何得到两个数组元素匹配的位置?
14. 如何从numpy数组中提取给定范围内的所有数字?
15. 如何创建一个python函数来处理scalars并在numpy数组上工作?
16. 如何交换二维numpy数组中的两列?
17. 如何交换二维numpy数组中的两行?
18. 如何反转二维数组的行?
19. 如何反转二维数组的列?
20. 如何创建包含5到10之间随机浮动的二维数组?
21. 如何在numpy数组中只打印小数点后三位?
22. 如何通过e式科学记数法(如1e10)来打印一个numpy数组?
23. 如何限制numpy数组输出中打印的项目数?
24. 如何打印完整的numpy数组而不截断
25. 如何导入数字和文本的数据集保持文本在numpy数组中完好无损?
26. 如何从1维元组数组中提取特定列?
27. 如何将1维元组数组转换为2维numpy数组?
28. 如何计算numpy数组的均值,中位数,标准差?
29. 如何规范化数组,使数组的值正好介于0和1之间?
30. 如何计算Softmax得分?
31. 如何找到numpy数组的百分位数?
32. 如何在数组中的随机位置插入值?
33. 如何在numpy数组中找到缺失值的位置?
34. 如何根据两个或多个条件过滤numpy数组?
35. 如何从numpy数组中删除包含缺失值的行?
36. 如何找到numpy数组的两列之间的相关性?   #PCC
37. 如何查找给定数组是否具有任何空值?
38. 如何在numpy数组中用0替换所有缺失值?
39. 如何在numpy数组中查找唯一值的计数?
45. 如何在numpy数组中找到最常见的值?
47. 如何将大于给定值的所有值替换为给定的截止值?
51. 如何在numpy中为数组生成单热编码?
60. 如何将PIL图像转换为numpy数组?
62. 如何计算两个数组之间的欧氏距离?
63. 如何在一维数组中找到所有的局部极大值(或峰值)?
......见
https://www.numpy.org.cn/article/advanced/numpy_exercises_for_data_analysis.html

摘自Numpy 中文文档,仅为了方便自己查询

https://www.numpy.org.cn/index.html

你可能感兴趣的:(NumPy的使用)