numpy的基本操作

简介: numpy的基本操作

1.常用方法创建array


print(np.array([1, 2, 3], dtype="f4"))# 32位浮点型


print(np.array([1.5, 2.2, 3]))# 默认浮点型


print(np.array([1, 2, 3, 4, 5], ndmin=3))# 3维数组


print(np.array([range(i, i + 5) for i in [1, 2, 3]]))#


print(np.zeros(shape=[5, 5], dtype="i4"))# 5x5的0数组


print(np.ones(shape=[5, 5], dtype="i4"))# 5x5的1数组


print(np.array(["1.1", "2.2", "3.3"], dtype="S").astype("f4"))#


print(np.array(["1.1", "2.2", "3.3"], dtype="S").astype("f4"))# 字符串数组转为浮点型数组


# 所有非零元素的索引

a=np.nonzero(np.array([1, 0, 2, 3, 0, 4]))#

print(a)#(array([0, 2, 3, 5], dtype=int64),)

print(a[0])# [0 2 3 5]

print(np.full(shape=[5, 5], fill_value=1.5, dtype=np.float_))# 5x5的1.5数组

print(np.eye(10))# 10x10的单位阵

# 数组元素为随机值,因为它们未初始化

print(np.empty(shape=(5, 5)))# 5x5的未初始化数组

print(np.linspace(1, 10, 5))# 返回num个等间距的样本

 

 

 

print(np.random.random((5, 5)))# 随机生成5行5列

# 生成[0, 10) 且 3行3列的随机数

# 生成的数据包括起始值和结束值,但不包括结束值本身。

print(np.random.randint(0, 10, (3, 3)))# 3x3的随机整数数组, 值在[0, 10)

print(np.random.normal(0, 1, (3, 3)))# 3x3的正态分布随机数, 均值为0, 方差为1

print(np.array([1, 2, 3]).itemsize)# 元素字节大小, 32位=4字节

2. Numpy 索引和切片

在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。

普通索引只取出序列中一个下标对应的元素,而切片取出序列中一个范围对应的元素

2.1普通索引

一维的索引

a1 = np.array([1, 2, 3, 4])

print(a1)

print(a1[0])

print(a1[2])

二维的索引

a2 = np.array([

[1, 2, 3],

[4, 5, 6],

[7, 8, 9]

])

print(a2[2])

print(a2[2, 1])

print(a2[:, 2])# 第2列元素,行索引省略表示所有行

a3 = np.array([

   [[10, 11, 12], [13, 14, 15], [16, 17, 18]],

   [[20, 21, 22], [23, 24, 25], [26, 27, 28]],

   [[30, 31, 32], [33, 34, 35], [36, 37, 38]]

])


# 打印数组 a3 的形状

print(a3.shape)  

# 打印 a3 的第三层(索引为 2)

print(a3[2])  

# 打印 a3 第三层的第一层(索引为 2,0)

print(a3[2, 0])  

# 打印 a3 第三层第一层的第二个元素(索引为 2,0,1)

print(a3[2, 0, 1])  

# 打印 a3 所有层的第二层的第三个元素(索引为 :,1,2)

print(a3[:, 1, 2])  

# 打印 a3 第二层的第三层(索引为 1,2)

print(a3[1, 2])  

# 打印 a3 第一层的所有元素(索引为 0,:)

print(a3[0, :])  

# 打印 a3 第一层的所有第二层元素(索引为 0,:,1)

print(a3[0, :, 1])  

# 打印 a3 所有层的第二层(索引为 :,1)

print(a3[:, 1])  

# 打印 a3 所有层的第二层的第一个元素(索引为 :,1,0)

print(a3[:, 1, 0])  

# 打印 a3 所有层的第二层和第三层的第一个元素(索引为 :,1:3,0)

print(a3[:, 1:3, 0])  

# 打印 a3 所有层的前两层的前两层(索引为 :,:2,:2)

print(a3[:, :2, :2])  

# 打印 a3 第二层的第二层和第三层的第二个元素(索引为 1:2,1:3,1)

print(a3[1:2, 1:3, 1])  

print(a3[:, 0, 1])  # 打印所有层的第一层的第二个元素

print(a3[:, ::2, 1])  # 打印所有层的隔一个元素的层的第二层元素

print(a3[:, [0, 2], [0, 1]])  # 以特定索引组合打印元素

2.2索引可以是array数组

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

mask1 = np.array([True, False, True, False, True, False, True, False, True],dtype=np.bool_)

index = np.array([1, 0, 1, 0, 1, 0, 1, 0, 1], dtype="i1")

print(data[mask1])# 索引为True的元素

# index表示索引 将data对应的索引选择出来

print(data[index])# 索引为1,0,1,0的元素

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

index = np.array([2, 4, 1, 0], dtype="i1")

print(data[index])# 索引为2,4,1,0的元素

2.3高级索引

arr = np.array([

   [1, 2, 3],

   [4, 5, 6],

   [7, 8, 9]])

# 使用整数数组索引选择元素

indices = np.array([0, 2])

result = arr[:, indices]# 选择第0列和第2列,即第0行和第2行

#result = arr[:, [0, 2]]#与上一行等价

print(result)

相关文章
|
程序员 开发工具 索引
图解Python numpy基本操作
图解Python numpy基本操作
|
搜索推荐 索引 Python
【科学计算包NumPy】NumPy数组的基本操作
【科学计算包NumPy】NumPy数组的基本操作
|
机器学习/深度学习 数据挖掘 Python
NumPy的基本操作(Python)
NumPy的基本操作(Python)
159 4
|
数据挖掘 Python
【Python数据分析 - 5】:Numpy-数组的基本操作
【Python数据分析 - 5】:Numpy-数组的基本操作
372 0
【Python数据分析 - 5】:Numpy-数组的基本操作
|
机器学习/深度学习 数据挖掘 BI
NumPy数据分析基础:ndarray数组运算基本操作及切片索引迭代
NumPy数据分析基础:ndarray数组运算基本操作及切片索引迭代
299 0
NumPy数据分析基础:ndarray数组运算基本操作及切片索引迭代
|
Python
CV5 numpy入门及图像的基本操作
复制法,即复制最边缘的像素。
212 0
|
索引 Python
05 numpy 基本操作
=== 为三个学生的三门课程成绩建模 === 姓名/成绩 语文 数学 英语 物理 Tom 90 100 110 89 Ali 80 100 33 99 Li 89 99 33 93 stu_info = np.
1126 0
|
6月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
506 1
|
6月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
328 0
|
8月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
750 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程