当前位置: 首页 > wzjs >正文

做网站wordpress大连企业网站建站模板

做网站wordpress,大连企业网站建站模板,可做外链的网站,深圳时事热点新闻在数据科学和科学计算的Python生态系统中,NumPy(Numerical Python)无疑是最基础、最重要的库之一。NumPy提供了一个强大的N维数组对象ndarray,以及大量操作这些数组的函数。无论是机器学习、图像处理还是金融分析,NumP…

在数据科学和科学计算的Python生态系统中,NumPy(Numerical Python)无疑是最基础、最重要的库之一。NumPy提供了一个强大的N维数组对象ndarray,以及大量操作这些数组的函数。无论是机器学习、图像处理还是金融分析,NumPy都扮演着核心角色。本文将全面介绍NumPy数组的各种操作,帮助读者从入门到精通掌握这一强大工具。

一、NumPy数组基础

1.1 什么是NumPy数组

NumPy数组(ndarray)是一个多维、同质的容器,用于存储相同类型的元素。与Python原生列表相比,NumPy数组具有以下优势:

  • 高效的内存使用:连续内存存储

  • 快速的向量化操作:避免显式循环

  • 丰富的数学函数:内置大量数学运算

  • 广播机制:不同形状数组间的运算

1.2 创建数组的多种方式

创建NumPy数组有多种方法,下面展示最常用的几种:

import numpy as np# 从Python列表创建
arr_from_list = np.array([1, 2, 3, 4, 5])# 特殊数组创建函数
zeros_arr = np.zeros((3, 3))  # 3x3全零数组
ones_arr = np.ones((2, 4))    # 2x4全1数组
eye_arr = np.eye(4)           # 4x4单位矩阵# 数值范围数组
range_arr = np.arange(0, 10, 2)  # 类似range但返回数组
linspace_arr = np.linspace(0, 1, 5)  # 0到1之间5个等距点# 随机数组
random_arr = np.random.rand(3, 3)  # 0-1均匀分布
normal_arr = np.random.randn(3, 3)  # 标准正态分布
randint_arr = np.random.randint(0, 10, (3, 3))  # 0-10随机整数

1.3 数组属性详解

理解数组属性是有效操作数组的基础:

sample_arr = np.array([[1, 2, 3], [4, 5, 6]])print("数组形状:", sample_arr.shape)  # (2, 3)
print("数组维度:", sample_arr.ndim)   # 2
print("元素总数:", sample_arr.size)   # 6
print("数据类型:", sample_arr.dtype)  # int64
print("每个元素字节大小:", sample_arr.itemsize)  # 8
print("数组总字节大小:", sample_arr.nbytes)  # 48

二、数组索引与切片

2.1 基本索引

NumPy数组支持多种索引方式:

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 单元素访问
print(arr[1, 2])  # 6# 行/列切片
print(arr[0:2])    # 前两行
print(arr[:, 1])   # 所有行的第二列# 步长切片
print(arr[::2, ::2])  # 每隔一行一列取元素

2.2 高级索引技术

NumPy提供了更灵活的索引方式:

# 布尔索引
bool_idx = arr > 5
print(arr[bool_idx])  # [6 7 8 9]# 花式索引
rows = [0, 2]
cols = [1, 0]
print(arr[rows, cols])  # [2 7] (第0行1列和第2行0列)# 使用np.where
print(np.where(arr > 5, arr, -1))
# [[-1 -1 -1]
#  [-1 -1  6]
#  [ 7  8  9]]

三、数组变形与操作

3.1 改变数组形状

arr = np.arange(12)# reshape不改变原数组
reshaped = arr.reshape(3, 4)# resize改变原数组
arr.resize(3, 4)# 展平数组
flattened = reshaped.flatten()  # 返回拷贝
raveled = reshaped.ravel()      # 返回视图# 转置操作
transposed = reshaped.T

3.2 数组拼接与分割

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])# 拼接操作
v_stack = np.vstack((a, b))  # 垂直拼接
h_stack = np.hstack((a, b.T))  # 水平拼接
d_stack = np.dstack((a, a))   # 深度拼接# 分割操作
split_arr = np.arange(9).reshape(3, 3)
result = np.split(split_arr, 3, axis=0)  # 垂直分割
result = np.hsplit(split_arr, 3)        # 水平分割

四、数组运算与广播

4.1 基本数学运算

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 元素级运算
print(a + b)  # [5 7 9]
print(a * b)  # [4 10 18]
print(a ** 2)  # [1 4 9]# 矩阵运算
dot_product = np.dot(a, b)  # 32
matrix_product = a @ b      # 32 (Python 3.5+)

4.2 广播机制详解

广播是NumPy最强大的特性之一,允许不同形状数组进行运算:

# 标量与数组
print(a + 1)  # [2 3 4]# 不同形状数组
matrix = np.array([[1, 2, 3], [4, 5, 6]])
vector = np.array([10, 20, 30])print(matrix + vector)
# [[11 22 33]
#  [14 25 36]]

广播规则:

  1. 从最后维度开始比较

  2. 维度大小相等或其中一方为1

  3. 缺失维度视为1

五、高级数组操作

5.1 排序与搜索

arr = np.array([3, 1, 4, 2, 5])# 排序
sorted_arr = np.sort(arr)  # 返回新数组
arr.sort()                # 原地排序# 搜索
print(np.where(arr > 3))  # 返回索引
print(np.argmax(arr))     # 最大值的索引

5.2 统计函数

matrix = np.random.randn(5, 5)print("总和:", np.sum(matrix))
print("均值:", np.mean(matrix))
print("标准差:", np.std(matrix))
print("最大值:", np.max(matrix, axis=0))  # 每列最大值
print("累计和:", np.cumsum(matrix))

5.3 文件IO操作

# 保存和加载单个数组
np.save('array.npy', matrix)
loaded = np.load('array.npy')# 保存和加载多个数组
np.savez('arrays.npz', mat1=matrix, mat2=matrix.T)
loaded = np.load('arrays.npz')

六、性能优化技巧

6.1 向量化操作

避免Python循环,使用NumPy内置函数:

# 不好的做法
result = np.empty_like(arr)
for i in range(len(arr)):result[i] = arr[i] * 2# 好的做法
result = arr * 2

6.2 内存视图

使用视图而非拷贝节省内存:

arr = np.arange(10)
view = arr[::2]  # 视图,不复制数据
copy = arr[::2].copy()  # 显式复制

6.3 预分配内存

对于大型数组,预分配内存可提高性能:

result = np.zeros(1000000)
for i in range(1000000):result[i] = some_computation(i)

七、实际应用案例

7.1 图像处理

from PIL import Image
import matplotlib.pyplot as plt# 加载图像为NumPy数组
image = np.array(Image.open('example.jpg'))# 灰度转换
gray = np.mean(image, axis=2).astype(np.uint8)# 显示图像
plt.imshow(gray, cmap='gray')
plt.show()

7.2 数据标准化

data = np.random.randn(100, 5)# Z-score标准化
mean = np.mean(data, axis=0)
std = np.std(data, axis=0)
normalized = (data - mean) / std

结语

NumPy是Python科学计算生态系统的基石,掌握NumPy数组操作是进行高效数据处理的必备技能。本文从基础创建到高级操作,全面介绍了NumPy数组的使用方法。希望读者能通过本文的学习,在实际工作中灵活运用NumPy,提高数据处理效率。

记住,NumPy的强大之处在于它的向量化操作和广播机制,合理利用这些特性可以大幅提升代码性能和可读性。随着实践的深入,你会发现NumPy几乎能解决所有数值计算问题,是数据科学家不可或缺的工具。

http://www.dtcms.com/wzjs/110971.html

相关文章:

  • 网站管理员登陆不了百度推广获客方法
  • 佛山南海网站开发软文广告有哪些
  • 广州建网站加备案软文推广服务
  • Wordpress主题禁用水平滚动seo简单优化
  • 南京做网站优化的公司小程序开发平台官网
  • 进口跨境电商网站制作自己的产品怎么推广
  • 美食网站 怎么做成都seo的方法
  • 开发app的资金需求如何做好搜索引擎优化工作
  • 网站网页设计多少钱5118关键词查询工具
  • 网站想换域名 如何操作百度的主页
  • 个人主页网页设计模板图片沈阳高端关键词优化
  • 做的网站缩小内容就全乱了yahoo搜索引擎提交入口
  • 网站建设公司哪个好做百度推广
  • 娱乐城网站建设温州seo招聘
  • 企业培训 电子商务网站建设 图片官方网站百度一下
  • 网站后台怎么做升华网络推广软件
  • 龙胜时代大厦 做网站最好用的搜索引擎排名
  • wordpress 高亮代码关键词优化排名软件怎么样
  • ppt免费背景图片正规优化公司哪家好
  • 东莞市官网网站建设报价手机推广软文
  • 网站备案的服务器租用免费下载app并安装
  • 文化传媒有限公司 网站建设有没有推广app的平台
  • 网站建设合同 售后维护期软文营销文案
  • 营销型网站关键词多少为好百度seo快排软件
  • 网站开发论文文献书籍策划品牌全案
  • 做网站工作量怎么算直播:韩国vs加纳直播
  • 三亚网站制作酒店线上推广方案有哪些
  • 柳州网站建设11百度seo公司电话
  • 网站建设定金合同谷歌google官方网站
  • 网站做重新定向 对网站有影响吗怎么优化自己网站的关键词