第二章 科学计算库NumPy

一.认识NumPy数组对象

(1).特点:即ndarray(别名array)对象并进行计算。

(2).属性

二.创建NumPy数组

(1).使用array()函数,在调用该函数时传入一个列表或者元组。

# 创建一个一维数组 data1 = np.array([1, 2, 3])

# 创建一个二维数组 data2 = np.array([[1, 2, 3], [4, 5, 6]])

(2).通过zeros()函数创建元素值都是0的数组;通过ones()函数创建元素值都为1的数组。

# 创建元素值全是0的数组 np.zeros((3, 4)) # 创建元素值全是1的数组 np.ones((3, 4))

(3).通过empty()函数创建一个新的数组,该数组只分配了内存空间,它里面填充的元素都是随机的。

# 创建元素值全是随机数的数组 np.empty((5, 2))

(4).通过arange()函数可以创建一个等差数组,它的功能类似于range(),只不过arange()函数返回的结果是数组,而不是列表

np.arange(1, 20, 5)

三 .ndarray对象的数据类型

1.查看数据类型

data_one = np.array([[1, 2, 3], [4, 5, 6]]) data_one.dtype.name    

(1).通过zeros()、ones()、empty()函数创建的数组,默认的数据类型为float64。

(2).默认情况下,64位windows系统输出的结果为int32, 64位Linux或macOS系统输出结果为int64,当然也可以通过dtype来指定数据类型的长度。

2.NumPy常用的类型举例:

3.特征:

4.转换数据类型

通过astype()方法进行转换。

data = np.array([[1, 2, 3], [4, 5, 6]]) data.dtype

# 数据类型转换为float64

float_data = data.astype(np.float64) float_data.dtype

三.数组运算

类型和方法:1.矢量化运算  形状相同的数组

即只用于位置相同的元素之间,所得的运算结果组成一个新的数组。

2.广播机制  形状不同的数组

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

需要满足的条件:(1)两个数组的某一维度等长。

(2)其中一个数组为一维数组。 广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。

3.数组与标量运算  标量

标量运算会产生一个与数组具有相同行和列的新矩阵,其原始矩阵的每个元素都被相加、相减、相乘或者相除。

四.ndarry的索引和切片

1.基本使用

arr = np.arange(8) # 获取索引为5的元素

arr[5] # 获取索引为3~5的元素,但不包括5 arr[3:5]

2.二维数组索引方式:

每个索引位置上的元素不再是一个标量了,而是一个一维数组。

arr2d = np.array([[1, 2, 3],

                             [4, 5, 6],

                             [7, 8, 9]])

# 获取索引为1的元素

arr2d[1]

3.想获取二维数组的单个元素,则需要通过形如“arr[x,y]”的索引来实现,其中x表示行号,y表示列号。

# 获取位于第0行第1列的元素 arr2d[0, 1]

4.要操作的对象是一个二维数组,则获取的结果就是对应下标的一行数据。

# 创建一个二维数组

demo_arr = np.empty((4, 4))

for i in range(4):  

    demo_arr[i] = np.arange(i, i + 4) # 获取索引为[0,2]的元素

demo_arr[[0, 2]]

5.用两个花式索引操作数组,则会将第1个作为行索引,第2个作为列索引,以二维数组索引的方式选取其对应位置的元素。

# 获取索引为(1,1)和(3,2)的元素

demo_arr[[1, 3], [1, 2]]

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值