NumPy库基础

简单学习了一下NumPy库的基础知识,对数组的一些运算操作。

1.认识ndarray对象

2.数组运算方式

3.数组索引和切片

4.使用数组进行数据处理

 1 """numpy库的基础"""
 2 import numpy as np
 3 data = np.arange(12).reshape(3, 4)  # 创建一个3行4列的数组
 4 
 5 print(data)
 6 
 7 print(data.ndim)  # 输出数组的维度
 8 print(data.size)  # 数组元素的个数
 9 print(data.dtype)  # 数组元素的类型,元素类型均为int32
10 print()
11 
12 data1 = np.array([1, 2, 3])  # 创建一个一维数组
13 print(data1)
14 print()
15 
16 data2 = np.array([[1, 2, 3], [4, 5, 6]])  # 创建一个二维数组
17 print(data2)
18 print(np.arange(6).reshape(1, 2, 3))
19 print()
20 
21 # 索引和切片,数组索引与列表差不多。注意行列!
22 # 花式索引基本使用
23 demo_arr = np.empty((4, 4), dtype=int)
24 for i in range(4):
25     demo_arr[i] = np.arange(i, i+4)
26 print(demo_arr)
27 print()
28 
29 print(demo_arr[[0, 2]])
30 print(demo_arr[[1, 3], [1, 2]])
31 print(demo_arr[:2, 2:])
32 
33 print(np.zeros((3, 4)))  # zeros方法可以直接创建元素值都为0的数组
34 print(np.ones((4, 4)))  # ones方法可以创建元素值都为1的数组
35 print(np.empty((5, 2)))  # empty方法创建的数组只分配了内存空间,内部元素均为随机,且类型默认为float64
36 print(np.arange(1, 50, 3))  # arange方法可以创建一个一维等差数组,(头,尾,差)
37 print(np.zeros((3, 4), float))  # 可在创建数组的同时制定其元素的类型
38 print()
39 
40 print(data1+data2)  # 数组相加
41 print(data1-data2)  # 数组相减
42 print(data1*data2)  # 数组相乘
43 print(data1/data2)  # 数组相除
44 print()
45 
46 # 数组的转置
47 arr = np.arange(12).reshape(3, 4)
48 arr1 = np.arange(6).reshape(1, 2, 3)
49 print(arr)
50 print(arr1)
51 print()
52 print(arr.T)
53 print(arr1.T)  # 数组的转置
54 print(arr1.transpose(1, 0, 2))
55 print(arr1.transpose(2, 0, 1))  # 三维数组的轴变换
56 print()
57 
58 arr2 = np.array([4, 9, 16])
59 print(np.sqrt(arr2))  # 数组元素的平方根
60 print(np.abs(arr2))  # 数组元素的绝对值
61 print(np.square(arr2))  # 数组元素的平方
 1 """numpy库的练习:蚂蚁随机走了2000步,向前走为1,向后走为-1,计算最终行走的点到起点的距离总和。"""
 2 import numpy as np
 3 
 4 steps = 2000
 5 draws = np.random.randint(0, 2, size=steps)
 6 direction_steps = np.where(draws > 0, 1, -1)
 7 # 生成的随机数在0,1之间,draws=0时,向后走,draws=1时,向前走
 8 distance = direction_steps.cumsum()  # 步数距离累计总和
 9 
10 print("行走最大的距离:%d" % distance.max())
11 print("行走最小的距离:%d" % distance.min())
12 
13 steps = 15/0.5  # 当行走距离大于等于15m时开始计算步数
14 print("行走的最大距离的步数:%d" % (np.abs(distance) >= steps).argmax())
15 
16 """绘制国际象棋8*8棋盘,其中白色为1,黑色为0"""
17 
18 arr1 = np.empty((8, 8), dtype=int)
19 for i in range(8):
20     for j in range(8):
21         if i % 2 == 0 | j % 2 == 0:  # i为偶数 j为偶数 棋盘数为1
22             arr1[i][j] = 1
23         elif i % 2 != 0 | j % 2 == 0:  # i为奇数 j为偶数 棋盘数为0
24             arr1[i][j] = 0
25         elif i % 2 == 0 | j % 2 != 0:  # i为偶数 j为奇数 棋盘数为1
26             arr1[i][j] = 1
27         else:   # 剩下位置为0
28             arr1[i][j] = 0
29 print(arr1)

数组运算:矢量化运算中,当形状不相等的数组执行算术运算时,会出现广播机制。*该机制会对数组进行扩展,使数组的shape属性值一样,这样方可进行矢量化运算。

NumPy的where()函数是三元表达式x if condition else y 的矢量化版本。简称为矢量化三元表达式。

 

线性代数模块、随机数模块部分未添加。

C_8学习记录 2019.05.07

转载于:https://www.cnblogs.com/BURY--18/p/10827855.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值