0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

这8个NumPy函数可以解决90%的常见问题

冬至子 来源:alimejor 作者:alimejor 2023-06-01 17:42 次阅读

Numpy快速而高效的原因是底层的C代码,这比使用Python进行数组的操作要快上几百倍,并且随着数据量级的上升而上升。

本文中整理了一些可以解决常见问题的主要的NumPy函数。

1、创建数组

numpy.array:创建新的NumPy数组

# Create an array using np.array()
 arr = np.array([1, 2, 3, 4, 5])
 
 print(arr)
 Ouput: [1 2 3 4 5]

numpy.zeros:创建一个以零填充的数组。

# Create a 2-dimensional array of zeros
 arr = np.zeros((3, 4))
 
 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

类似的还有numpy.ones:创建一个都是1的数组 / numpy.empty:在不初始化数组元素的情况下创建数组。

使用numpy.random:生成随机数组的函数。

# Generate a random integer between 0 and 9
 rand_int = np.random.randint(10)
 print(rand_int)

numpy.linspace:在指定范围内生成均匀间隔的数字。

# Generate an array of 5 values from 0 to 10 (inclusive)
 arr = np.linspace(0, 10, 5)
 
 # Print the array
 print(arr)
 [ 0.   2.5  5.   7.5 10. ]

numpy.range:用间隔的值创建数组。

# Generate an array from 0 to 10 (exclusive) with step size 1
 arr = np.arange(0, 10, 2)
 
 # Print the array
 print(arr)
 [1 3 5 7 9]

2、查看数组信息

numpy.shape:返回一个表示数组形状的元组。

numpy.ndim:返回数组的维度数。

numpy.dtype:获取数组中元素的数据类型。可以是int型,float型,bool型等等。

3、数组操作函数

numpy.reshape:改变数组的形状。

# Create a 1-dimensional array
 arr = np.array([1, 2, 3, 4, 5, 6])
 
 # Reshape the array to a 2x3 matrix
 reshaped_arr = np.reshape(arr, (2, 3))
 
 [[1 2 3]
  [4 5 6]]

numpy.transpose:用于排列数组的维度。它返回一个轴调换后的新数组。

# Create a 2-dimensional array
 arr = np.array([[1, 2, 3],
                 [4, 5, 6]])
 
 # Transpose the array
 transposed_arr = np.transpose(arr)
 [[1 4]
  [2 5]
  [3 6]]

numpy.concatate:沿现有轴连接数组。

# Create two 1-dimensional arrays
 arr1 = np.array([1, 2, 3])
 arr2 = np.array([4, 5, 6])
 
 # Concatenate the arrays along axis 0 (default)
 concatenated_arr = np.concatenate((arr1, arr2))
 [1 2 3 4 5 6]

numpy.split:分割数据,numpy.resize:改变数组的形状和大小。

numpy.vstack:将多个数组垂直堆叠以创建一个新数组。

# Create two 1-dimensional arrays
 arr1 = np.array([1, 2, 3])
 arr2 = np.array([4, 5, 6])
 
 # Vertically stack the arrays
 stacked_arr = np.vstack((arr1, arr2))
 [[1 2 3]
  [4 5 6]]

numpy.hstack:与vstack类似,但是是水平堆叠数组。

4、数学函数

numpy.sum:计算数组元素的和。

numpy.mean:计算数组的算术平均值。

numpy.max:返回数组中的最大值。

numpy.min:返回数组中的最小值。

numpy.abs:计算元素的绝对值。

numpy.exp:计算所有元素的指数。

numpy.subtract: 对两个数组的对应元素进行减法运算。

numpy.multiply: 对两个数组的对应元素进行乘法运算。

numpy.divide: 对两个数组的对应元素进行除法运算。

numpy.sin: 计算数组中每个元素的正弦值。

numpy.cos: 计算数组中每个元素的余弦值。

numpy.log: 计算数组中每个元素的自然对数(以e为底的对数)。

5、统计函数

numpy.std:计算数组的标准差。

# Create a 1-dimensional array
 arr = np.array([1, 2, 3, 4, 5])
 
 # Compute the standard deviation of the array
 std = np.std(arr)
 1.4142135623730951

numpy.var:计算数组的方差。

numpy.histogram:计算一组数据的直方图。

numpy.percentile:计算数组的第n个百分位数。它返回低于给定百分比的数据的值。

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
 
 # Calculate the 50th percentile (median) of the data
 median = np.percentile(data, 50)
 
 # Calculate the 25th and 75th percentiles (quartiles) of the data
 q1 = np.percentile(data, 25)
 q3 = np.percentile(data, 75)
 
 Median: 5.5
 Q1: 3.25
 Q3: 7.75

numpy.corcoef:计算两个数组之间的相关系数。numpy.mean: 计算数组元素的平均值。numpy.median: 计算数组元素的中位数。

numpy.random.rand:在区间[0,1]内从均匀分布生成随机数数组

# Generate a 1-dimensional array of random numbers
 random_array = np.random.rand(5)
 [0.35463311 0.67659889 0.5865293  0.77127035 0.13949178]

numpy.random.normal:从正态(高斯)分布生成随机数

# Generate a random number from a normal distribution
 random_number = np.random.normal()
 -0.6532785285205665

6、线性代数函数

numpy.dot:计算两个数组的点积。

# Create two arrays
 a = np.array([1, 2, 3])
 b = np.array([4, 5, 6])
 
 # Compute the dot product of the arrays
 dot_product = np.dot(a, b)
 
 32

numpy.linalg.inv:计算一个方阵的逆, numpy.linalg.eig:一个方阵的特征值和特征向量。numpy.linalg.solve:求解一个线性方程组。

7、排序函数

numpy.sort:沿指定轴返回数组的排序副本

# Create a 2D array
 arr = np.array([[3, 1, 5], [2, 4, 6]])
 
 # Sort the array along the second axis (columns)
 sorted_arr = np.sort(arr, axis=1)
 
 [[1 3 5]
  [2 4 6]]

numpy.argsort:返回按升序对数组排序的索引

# Create an array
 arr = np.array([3, 1, 5, 2, 4])
 
 # Get the indices that would sort the array
 sorted_indices = np.argsort(arr)
 
 [1 3 0 4 2]

8、其他一些高级的函数

numpy.unique:在数组中查找唯一的元素。

arr = np.array([2, 1, 3, 2, 1, 4, 5, 4])
 
 # Get the unique elements of the array
 unique_values = np.unique(arr)
 [1 2 3 4 5]

numpy.fft:傅里叶变换的函数。

numpy.ma:供对掩码数组的支持。

  • numpy.ma.array:从现有的数组或序列创建一个掩码数组。
  • numpy.ma.masked_array:从现有数组和掩码中创建一个掩码数组。
  • numpy.ma.mask:表示掩码数组中的掩码值。
  • numpy.ma.masked_invalid:屏蔽数组中无效的(NaN, Inf)元素。
  • numpy.ma.masked_greate, numpy.ma.masked_less:掩码大于或小于给定值的元素。
arr = np.array([1, 2, 3, np.nan, 5])
 
 # Create a masked array by masking the invalid values
 masked_arr = ma.masked_invalid(arr)
 [1 2 3 5]

numpy.apply_along_axis:沿着数组的特定轴应用函数。

numpy.wheres:一个条件函数,根据给定条件返回数组中满足条件的元素的索引或值。

condition = np.array([True, False, True, False])
 
 # Create two arrays
 array_true = np.array([1, 2, 3, 4])
 array_false = np.array([5, 6, 7, 8])
 
 result = np.where(condition, array_true, array_false)
 
 [1 6 3 8]

以上就是Numpy最经常被使用的函数,希望对你有所帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7494

    浏览量

    87935
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84674
  • 傅里叶变换
    +关注

    关注

    6

    文章

    441

    浏览量

    42600
收藏 人收藏

    评论

    相关推荐

    90电气技术常见问题及解答

    90电气技术常见问题及解答
    的头像 发表于 11-26 09:11 3.4w次阅读

    利用Numba编写快速NumPy函数

    《利用Python进行数据分析》 附录 A7 使用Numba编写快速NumPy函数
    发表于 04-07 06:31

    matlab常见问题

    matlab常见问题集 matlab安装、运行与其他问题集锦Q1:matlab有没有监视内存的方法?A: 用函数whos。 Q2:如何
    发表于 06-18 14:52 2135次阅读

    Keil编译常见问题

    吴鉴鹰总结的Keil 编译常见问题,吴鉴鹰总结的Keil 编译常见问题
    发表于 07-22 15:31 10次下载

    AutoCAD应用技巧与常见问题

    AutoCAD应用技巧与常见问题,感兴趣的小伙伴们可以看一看。
    发表于 09-18 14:55 0次下载

    基于495C语言常见问题

    基于495C语言常见问题
    发表于 10-13 10:18 2次下载
    基于495<b class='flag-5'>个</b>C语言<b class='flag-5'>常见问题</b>集

    灵活运用Python中numpy库的矩阵运算

    ([1,2,3]); a1=mat(a1); 创建常见的矩阵 data1=mat(zeros((3,3))); #创建一3*3的零矩阵,矩阵这里zeros函数的参数是一tuple类
    发表于 11-15 20:07 2328次阅读

    电气二次常见问题有哪些_40电气二次常见问题盘点

    本文主要介绍的是电气二次常见问题,首先介绍了电气二次原理图,其次盘点了40电气二次常见问题,具体的跟随小编一起来了解一下。
    发表于 05-31 16:51 5392次阅读
    电气二次<b class='flag-5'>常见问题</b>有哪些_40<b class='flag-5'>个</b>电气二次<b class='flag-5'>常见问题</b>盘点

    labview有哪些常见问题?labview三常见问题和解决方法概述

    本文档的主要内容详细介绍的是labview有哪些常见问题?labview三常见问题和解决方法概述三常见问题是:1.labview在运行后
    发表于 09-18 18:53 0次下载

    灰尘网络常见问题

    灰尘网络常见问题
    发表于 04-28 15:08 8次下载
    灰尘网络<b class='flag-5'>常见问题</b>

    解读12 种 Numpy 和 Pandas 高效函数技巧

    本文分享给大家 12 种 Numpy 和 Pandas 函数,这些高效的函数会令数据分析更为容易、便捷。最后,读者也可以在 GitHub 项目中找到本文所用代码的 Jupyter No
    的头像 发表于 06-29 17:05 1503次阅读

    隔离信号和电源的4常见问题

    隔离信号和电源的4常见问题
    发表于 10-28 12:00 1次下载
    隔离信号和电源的4<b class='flag-5'>个</b><b class='flag-5'>常见问题</b>

    互联车辆如何处理数据:3常见问题

    互联车辆如何处理数据:3常见问题
    发表于 10-31 08:23 0次下载
    互联车辆如何处理数据:3<b class='flag-5'>个</b><b class='flag-5'>常见问题</b>

    FPGA/CPLD设计的8常见问题

    数据接口的同步是 FPGA/CPLD 设计的一常见问题,也是一重点和难点,很多设计不稳定都是源于数据接口的同步有问题。在电路图设计阶段,一些工程师手工加入 BUFT 或者非门调整数据延迟,从而保证本级模块的时钟对上级模块数据
    发表于 12-01 09:38 1132次阅读

    UCD90xxx系列常见问题和解答

    电子发烧友网站提供《UCD90xxx系列常见问题和解答.pdf》资料免费下载
    发表于 10-15 11:29 0次下载
    UCD<b class='flag-5'>90</b>xxx系列<b class='flag-5'>常见问题</b>和解答