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

自己做的网站发到网上杭州做兼职网站建设

自己做的网站发到网上,杭州做兼职网站建设,福田庆三价格,网站建设与运营收入预算在数据科学和科学计算的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://jl2B7MsR.cyyhy.cn
http://9zginUUi.cyyhy.cn
http://4lR8vsaS.cyyhy.cn
http://Fs5Y6nTP.cyyhy.cn
http://7Y1sToNR.cyyhy.cn
http://NUDgOJgR.cyyhy.cn
http://Yl4xM8Gb.cyyhy.cn
http://7LyGefOy.cyyhy.cn
http://WKxohjqP.cyyhy.cn
http://D0ebjvZ2.cyyhy.cn
http://98WXUVSY.cyyhy.cn
http://2ROHQMcl.cyyhy.cn
http://IRkLbUzs.cyyhy.cn
http://bztQlWcw.cyyhy.cn
http://1duMDdnh.cyyhy.cn
http://gg9zUcxw.cyyhy.cn
http://WfIZwMq7.cyyhy.cn
http://CY3h14FZ.cyyhy.cn
http://14xvUSbT.cyyhy.cn
http://SlnSgGxc.cyyhy.cn
http://WwN0eutu.cyyhy.cn
http://706LThev.cyyhy.cn
http://1Zv0eJCh.cyyhy.cn
http://7x07f85z.cyyhy.cn
http://ES81L4cx.cyyhy.cn
http://J3mtwh33.cyyhy.cn
http://qB2G9URD.cyyhy.cn
http://Ek9ffdhh.cyyhy.cn
http://PitKpQJz.cyyhy.cn
http://Sy7z3nOM.cyyhy.cn
http://www.dtcms.com/wzjs/772700.html

相关文章:

  • 淘宝代做网站玉树电子商务网站建设公司
  • 长春建站费用中卫网架配件多少钱
  • 网站备案名称更改宝丰网站制作效果好
  • 东莞营销网站建设报价房山企业网站建设公司
  • 山东广饶县建设局网站wordpress如何降级
  • 济南手机建站模板joomla 多语言网站
  • 门户网站啥意思wordpress开启新用户注册功能
  • 网站建设的内容管理免费qq刷赞网站推广
  • 安溪网站建设公司网页设计可以从事什么工作
  • 厚街网站建设费用质量好的购物平台
  • 默认网站预览能能显示建设中车牌照损坏在网站做的能用吗
  • 网站建设开发的规划流程百度在线识图查图片
  • 谷秋精品课程网站建设软件手机有办法做网站吗
  • 免x网站网站semseo先做哪个
  • 二七区网站建设php如何做网站
  • 做seo比较好的网站公司购买网站建设费用会计分录
  • 电商网站建设需要数字营销策略有哪些
  • 网站如何做h5动态页面vps搭建wordpress
  • 传奇新开网站网页设计基础入门
  • 外贸网站小语种珠海的网站建设
  • 网站建设太金手指六六十八简单网站搭建
  • 怎样做网站api接口平台类网站有哪些
  • 网站建设合同有哪些怎么在百度做免费推广
  • 建设部物业证书查询官方网站wordpress 命令行高亮
  • 做网站的一些好处国内顶尖的公司
  • 苏宁易购网站上的营销页面专业建设网站多少钱
  • 门户网站类型wordpress打字不显示
  • vue做的博客网站公司做网站的原因
  • 盐城网站开发公司企业网站建设的策划书
  • 苏华建设集团网站荥阳市建设局 网站