python-numpy-常用函数详解

np.tile(A, reps)

用于在不同维度上复制数组。具体来说,np.tile(A, reps)会将数组A沿各个维度复制指定的次数,形成一个新的数组。
参数解释:

  • A:要复制的数组
  • reps:指定每个维度上复制的次数,可以是一个整数或一个元组。如果reps是一个整数n,则表示沿着每个维度将数组复制n次;如果reps是一个元组(m, n),则表示沿着每个维度将数组复制m次沿第一个轴,n次沿第二个轴,依此类推。
import numpy as np

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

# 将数组沿着第一个轴复制3次
result1 = np.tile(arr, 3)

print(result1)

# 输出结果为:
[1 2 3 1 2 3 1 2 3]

A = np.array([[1, 2], [3, 4]])
result2 = np.tile(A, (2, 3))

print(result2)

# 输出结果为:
array([[1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4],
       [1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]])


np.newaxis

一种在NumPy中用于改变数组维度的常见操作
当使用np.newaxis时,它实际上是一个None对象的别名,用于增加数组的维度。通过在切片操作中使用np.newaxis,可以改变数组的维度,从而方便进行矩阵运算。

import numpy as np

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

# 使用np.newaxis增加一个新的轴
new_arr = arr[:, np.newaxis]

print(new_arr)
print(new_arr.shape)

输出结果:
array([[1],
       [2],
       [3],
       [4]])
(4, 1)

np.stack(arrays, axis=0)

用于沿着新的轴堆叠数组序列。具体来说,np.stack 可以将多个数组沿着指定的轴(axis)进行堆叠,生成一个新的数组。

参数说明:

  • arrays:要堆叠的数组序列,可以是多个数组组成的列表或元组。
  • axis:指定沿着哪个轴进行堆叠。默认值为 0,表示沿着新的第一个轴进行堆叠。axis=-1表示沿着数组的最后一个轴进行堆叠操作。
import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

stacked_array = np.stack((arr1, arr2))
print(stacked_array)

输出结果:
[[1 2 3]
 [4 5 6]]

np.roll(a, shift, axis=None)

用于对数组进行循环移位操作的函数。该函数可以将数组沿指定轴进行循环移位,即将数组的元素按照指定的偏移量进行重新排列。
参数说明:

  • a:输入数组
  • shift:循环移位的偏移量,可以是正数或负数
  • axis:指定沿着哪个轴进行循环移位操作,如果不指定则将数组展平后进行移位操作
import numpy as np

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

# 对数组进行循环右移两位
result = np.roll(arr, 2)

print(result)

# 输出结果为:
[4 5 1 2 3]

np.repeat(a, repeats, axis=None)

用于重复数组中的元素的函数。它可以在指定轴上重复数组中的元素
参数解释:

  • a:要重复的数组
  • repeats:整数或整数数组,指定每个元素重复的次数
  • axis:指定沿着哪个轴重复元素,默认为None,表示将数组展平后重复
import numpy as np

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

# 将数组中的每个元素重复2次
repeated_arr = np.repeat(arr, 2)

print(repeated_arr)
输出结果:
[1 1 2 2 3 3]

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

# 在轴0上重复每行2次
repeated_arr_axis0 = np.repeat(arr, 2, axis=0)

print(repeated_arr_axis0)

输出结果:
[[1 2]
 [1 2]
 [3 4]
 [3 4]]

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

# 在轴1上重复每列3次
repeated_arr_axis1 = np.repeat(arr, 3, axis=1)

print(repeated_arr_axis1)
输出结果:

[[1 1 1 2 2 2]
 [3 3 3 4 4 4]]

arr.reshape(shape)

NumPy中用于改变数组形状的函数。它可以将数组重新排列为指定形状,但要确保新形状与原始数组包含的元素数量一致。
参数解释:

  • shape:新的形状,可以是一个整数元组,表示数组的维度 ,
import numpy as np

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

# 将一维数组reshape为二维数组
reshaped_arr = arr.reshape(2, 3)

print(reshaped_arr)

输出结果:
[[1 2 3]
 [4 5 6]]

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

#-1表示第二维的大小则根据总元素数量和前两维的大小自动计算得出。
reshaped_array = arr.reshape(6, -1, 2)

输出结果:
[[[ 1  2]
  [ 3  4]]

 [[ 5  6]
  [ 7  8]]

 [[ 9 10]
  [11 12]]]

arr.ravel()

用于将多维数组展平为一维数组。具体来说,ravel()函数会返回一个包含原始数组所有元素的一维数组,元素的顺序是按照原始数组在内存中的顺序来展开的。

import numpy as np

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

print("原始数组:")
print(arr)
print("\n展平后的一维数组:")
print(raveled_arr)

原始数组:
[[1 2 3]
 [4 5 6]]

展平后的一维数组:
[1 2 3 4 5 6]

np.mean(a, axis=None, dtype=None,keepdims=np._NoValue)

  • a:要计算均值的数组或矩阵。
  • axis:指定计算均值的轴方向。默认为None,表示计算整个数组或矩阵的均值;如果指定为0,则沿着列方向计算均值;如果指定为1,则沿着行方向计算均值。
  • dtype:指定返回结果的数据类型。
  • keepdims=True时,结果将保持原始数组的维度,即返回的结果会是一个具有相同维度的数组。这在进行广播操作时非常有用。
import numpy as np

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

=# 计算整个数组的均值,并保持维度
mean_all = np.mean(arr, keepdims=True)
print("整个数组的均值(保持维度):")
print(mean_all)
print("维度:", mean_all.shape)

# 沿着列方向计算均值,并保持维度
mean_col = np.mean(arr, axis=0, keepdims=True)
print("每列的均值(保持维度):")
print(mean_col)
print("维度:", mean_col.shape)

# 沿着行方向计算均值,并保持维度
mean_row = np.mean(arr, axis=1, keepdims=True)
print("每行的均值(保持维度):")
print(mean_row)
print("维度:", mean_row.shape)

整个数组的均值(保持维度):

[[5.]]
维度: (1, 1)

每列的均值(保持维度):
[[4. 5. 6.]]
维度: (1, 3)

每行的均值(保持维度):
[[2.]
 [5.]
 [8.]]
 维度: (3, 1)

np.where(condition, x, y)

参数说明:

  • condition:表示条件表达式,可以是一个布尔数组或条件表达式。
  • x:表示满足条件时返回的值或数组。
  • y:表示不满足条件时返回的值或数组。
import numpy as np

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

# 使用np.where()函数找出数组中大于2的元素的索引
indices = np.where(arr > 2)
print("大于2的元素的索引:", indices)

# 使用np.where()函数将数组中大于2的元素替换为0,小于等于2的元素替换为1
new_arr = np.where(arr > 2, 0, 1)
print("替换后的数组:", new_arr)

输出结果:
大于2的元素的索引: (array([2, 3, 4], dtype=int64),)
替换后的数组: [1 1 0 0 0]


np.maximum(array1, array2)

np.maximum()函数会返回一个新的数组,其中每个位置的元素是两个输入数组对应位置元素的最大值。

参数说明:

  • array1:第一个输入数组。
  • array2:第二个输入数组。

下面是一个示例,说明如何使用np.maximum()函数:

import numpy as np

# 创建两个数组
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([3, 2, 1, 5, 4])

# 使用np.maximum()函数逐元素取最大值
result = np.maximum(arr1, arr2)
print("逐元素最大值:", result)

输出结果:
逐元素最大值: [3 2 3 5 5]

np.all(array, axis=None)

np.all()函数会返回一个布尔值,如果数组中的所有元素都满足条件,则返回True,否则返回False

参数说明:

  • array:输入的数组。
  • axis:指定沿着哪个轴进行操作,如果不指定,则会将整个数组视为一个一维数组。

下面是一个示例,说明如何使用np.all()函数:

import numpy as np

# 创建一个数组
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/5093e0ebb8068b355a04ef32bc23e775.png)

 

![img](https://img-blog.csdnimg.cn/img_convert/c831cd47d05e6f31b8c7c1c81685b0b7.png)

![img](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)

![img](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

convert/252731a671c1fb70aad5355a2c5eeff0.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

<img src="https://img-community.csdnimg.cn/images/fd6ebf0d450a4dbea7428752dc7ffd34.jpg" alt="img" style="zoom:50%;" />
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值