数据科学与计算numpy

一、NumPy简介

1.定义

NumPy是一个开源的Python科学计算库,主要用于数组和矩阵的操作,能够简化代码编写,减少循环语句的使用。

2.功能

提供大量数学函数,方便进行科学计算。

二、Ndarray对象

1.定义

N维数组,用于存放同类型元素的多维数组,以0为下标起始。

2.功能

支持多种创建方式和操作。

三、创建Ndarray数组对象

常用函数

array():从Python列表或元组创建数组。

empty():创建未初始化的数组。

zeros():创建全0数组。

ones():创建全1数组。

full():创建指定值填充的数组。

eye():创建单位矩阵。

arange():创建等差数组。

frombuffer():从缓冲区创建数组。

linspace():创建等间隔数组。等差

logspace():创建对数间隔数组。等比

random.rand():创建随机数组(均匀分布)。

random.random():创建随机数组(0到1之间)。

random.randint():创建随机整数数组。

random.randn():创建正态分布随机数组。

random.normal():创建正态分布随机数组。

四、Ndarray数组属性

主要属性

ndim:数组的维度数量。shape:数组的维度形状。

size:数组元素的总个数。dtype:数组元素的数据类型。

import random
li = []
for i in range(10000000):
    li.append(random.random())
import time
t1 = time.time()
ret = sum(li)
t2 = time.time()
print("耗时:%f" % (t2 - t1))
print(ret)

耗时:0.046495
5000088.736804608


import numpy as np
n = np.array(li)
t1 = time.time()
ret = np.sum(n)
t2 = time.time()
print("耗时:%f" % (t2 - t1))
print(ret)

耗时:0.011325
5000088.736804878



import numpy as np
arr = np.arange(24)
print(arr)
print(arr.ndim)

arr2 = arr.reshape(2, 3, 4)
print(arr2)
print(arr2.ndim)

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
1
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
3





arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
print(arr.shape)
[[1 2 3]
 [4 5 6]]
(2, 3)

 

五、切片和索引

操作方式

支持基于索引和切片的访问与修改。切片操作与Python列表类似。支持使用省略号“...”进行多维数组的切片。

六、课堂练习

练习题目

生成一个3×3的对角矩阵。

import numpy as np
a1 = np.eye(3)
print(a1)
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

创建一个长度为10的数组,值为0到1之间,不包含首尾。

a2 = np.linspace(0, 1, 12)[1:-1]     
print(a2)
[0.09090909 0.18181818 0.27272727 0.36363636 0.45454545 0.54545455
 0.63636364 0.72727273 0.81818182 0.90909091]

创建一个长度为10的0数组,第5个值为1。

a3 = np.zeros(10)
a3[4] = 1
print(a3)
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]

创建一个值从30到50,步长为2的数组。

a4 = np.arange(30, 51, 2)
print(a4)
[30 32 34 36 38 40 42 44 46 48 50]

创建一个四边为1,中间为0的二维数组。

a5 = np.ones((5, 5))
a5[1:-1, 1:-1] = 0
print(a5)
[[1. 1. 1. 1. 1.]
 [1. 0. 0. 0. 1.]
 [1. 0. 0. 0. 1.]
 [1. 0. 0. 0. 1.]
 [1. 1. 1. 1. 1.]]

创建一个2×3的二维数组,并输出其维度、行数和列数、元素个数。

import numpy as np

arr = np.arange(1, 7).reshape(2, 3)

print("数组内容:")
print(arr)

print("维度:", arr.ndim)          
print("行数:", arr.shape[0])     
print("列数:", arr.shape[1])    
print("元素个数:", arr.size) 
数组内容:
[[1 2 3]
 [4 5 6]]
维度: 2
行数: 2
列数: 3
元素个数: 6

给定一个6×7×8的三维矩阵,求第100个元素的索引。

import numpy as np
shape = (6,7,8)
num = 99
i = num // (7*8)#层
j = (num // 8) % 7 #行
k = num % 8 #列
print(i,j,k)
1 5 3

如何交换二维数组中的两列。

import numpy as np
arr = np.arange(12).reshape(3, 4)
print("原始数组:\n", arr)
arr[[1, 2]] = arr[[2, 1]]
print("\n交换第 1 行和第 2 行后的数组:\n", arr)
原始数组:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

交换第 1 行和第 2 行后的数组:
 [[ 0  1  2  3]
 [ 8  9 10 11]
 [ 4  5  6  7]]

这些练习涵盖了NumPy的基本操作,包括数组的创建、索引、切片、属性访问以及一些常见的数组操作。通过这些练习,可以快速掌握NumPy的基本用法,为更复杂的科学计算打下基础。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值