数学建模-数据分析Numpy(利用python进行数据分析)

这篇读书笔记详细介绍了NumPy的基础知识,包括数组创建、副本与视图的区别、批量修改值、切片索引、transpose函数的应用。此外,还探讨了条件逻辑在数组中的应用,如使用np.where(),并讲解了数组的统计方法、any和all函数的用法,以及随机数函数。文章深入浅出,适合Python数据分析初学者学习。
摘要由CSDN通过智能技术生成

读书笔记-NumPy

利用Python进行数据分析读书笔记-Numpy部分

2021.8.5

1、基本

  • 代码块
import numpy as np

data1 = np.array([1,2,3,4])
print(data1)

arr1 = np.full((2,3),1,'float')
print(arr1)
arr1.astype('int32')
print(arr1)
arr = np.arange(1,43,2)
arr[5:9] = 10
print(arr)
arr[:] = 9
print(arr)
  • 运行结果
[1 2 3 4]
[[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]]
[ 1  3  5  7  9 10 10 10 10 19 21 23 25 27 29 31 33 35 37 39 41]
[9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9]

表4-1 数组创建函数

img

2、副本与视图

  • 代码块
# 副本与视图的区别
arr = np.arange(1,10,1)
# 视图
arr_view1 = arr
arr_view2 = arr.view()
# 副本
arr_copy = arr.copy()

arr[3:6] = 0

print("View1",arr_view1)
print("View2",arr_view2)
print("Copy",arr_copy)
  • 运行结果
View1 [1 2 3 0 0 0 7 8 9]
View2 [1 2 3 0 0 0 7 8 9]
Copy [1 2 3 4 5 6 7 8 9]

3、批量修改矩阵的值

  • 代码块
# 批量修改矩阵的值
arr = np.arange(1,10,1)
print(arr == 0)
arr[arr==0] = 999
print(arr)
arr[[1,3,4]] = 0
print(arr)
  • 运行结果
[False False False False False False False False False]
[1 2 3 4 5 6 7 8 9]
[1 0 3 0 0 6 7 8 9]

4、切片索引、一些好用的索引方法

  • 代码块
arr = np.arange(32).reshape((8,4))
print(arr[[0,2,3],[0,3,3]])
print(arr[0][0],arr[2][3],arr[3][3])
print("arr > 9:",arr[arr > 9])
print(arr)
  • 运行结果
[ 0 11 15]
0 11 15
arr > 9: [10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]
[[ 0  1  2  3]
[ 4  5  6  7]
[ 8  9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]]

5、transpose的参数问题

  • 代码块
arr = np.arange(32).reshape((2,4,4))
print("arr",arr)
print("arr_0_1_2",arr.transpose(0,1,2))  # 0,1,2代表三个轴都不变
arr_1_0_2 = arr.transpose(1,0,2)  # 0轴和1轴换了
print("arr_1_0_2",arr_1_0_2)
  • 运行结果
arr [[[ 0  1  2  3]
[ 4  5  6  7]
[ 8  9 10 11]
[12 13 14 15]]

[[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]]]
arr_0_1_2 [[[ 0  1  2  3]
[ 4  5  6  7]
[ 8  9 10 11]
[12 13 14 15]]

[[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]]]
arr_1_0_2 [[[ 0  1  2  3]
[16 17 18 19]]

[[ 4  5  6  7]
[20 21 22 23]]

[[ 8  9 10 11]
[24 25 26 27]]

[[12 13 14 15]
[28 29 30 31]]]

6、NumPy的一些函数

img

img

img

img

7、meshgrid()

输入的xy,就是网格点的横纵坐标列向量(非矩阵)
输出的XY,就是坐标矩阵

  • 代码块
x = np.array([[0, 1, 2], [0, 1, 2]])
y = np.array([[0, 0, 0], [1, 1, 1]])
X, Y = np.meshgrid(x, y)
print(X)
print(Y)
plt.plot(X, Y,marker='.',linestyle='')
plt.grid(True)
plt.show()
  • 运行结果
[[0 1 2 0 1 2]
[0 1 2 0 1 2]
[0 1 2 0 1 2]
[0 1 2 0 1 2]
[0 1 2 0 1 2]
[0 1 2 0 1 2]]
[[0 0 0 0 0 0]
[0 0 0 0 0 0]
[0 0 0 0 0 0]
[1 1 1 1 1 1]
[1 1 1 1 1 1]
[1 1 1 1 1 1]]

8、条件逻辑在数组中的应用

1、原始方法

缺点:

①处理速度比较慢

②无法用于多维数组

  • 代码块
# 原始方法
xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
cond = np.array([True, False, True, True, False])
# 如果c是true返回x,否则返回y
result = [(x if c else y) for x, y, c in zip(xarr, yarr, cond)]
print(result)
  • 运行结果
[1.1, 2.2, 1.3, 1.4, 2.5]
2、np.where()
  • 代码块
# np.where()
arr = np.arange(1,20)
print(arr)
np.where(arr>10,0,1)
  • 运行结果
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]

Out[89]:

array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0])

9、数学上的一些统计方法

img

img

  • sort() 排序

10、any和all

any用于测试数组中是否存在一个或多个True,而all则检查数组中所有值是否都是True。

  • 代码块
arr = np.array([True,False,True])
print(arr.any())
print(arr.all())
  • 运行结果
True
False

11、数组集合的一些相关查询操作

img

12、线性代数相关

img

13、随机数函数

img

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值