NumPy基础知识

NumPy(Numerical Python)是Python数值计算的开源扩展。该工具可用于存储和处理大型矩阵。它比Python自己的嵌套列表结构更高效。它支持多维数组和矩阵操作。此外,它还提供了大量用于数组操作的数学库。NumPy用于处理数组。

NumPy的前身Numeric最初是由Jim Hugunin和其他合作者开发的。Python本身有列表和数组,但对于大型数据处理,其结构有许多缺点。Python并不能很好地支持多维数组和矩阵,因此NumPy填补了这些空白,它提供了两个适用于这类数据的数值计算的基本对象:Ndarray和Ufunc。简而言之,NumPy是一个Python库。

NumPy能干嘛?

(1)NumPy可以帮助你研究:

  1. 数据科学与机器学习
  2. 线性代数积分插值,特殊功能
  3. 信号处理和图像处理
  4. 科学与工程计算
  5. 常微分方程
  6. 提供应用程序接口(API)

(2)学习NumPy的先决条件
在学习NumPy编程之前,您必须具备Python语言。

开始Numpy学习之旅

  1. 导入Numpy库
#Example 1.1
import numpy
myArr=numpy.array([0,1,2,3,4,5])
print(myArr)
# [0 1 2 3 4 5]
# import numpy 是一个NumPy命令,用于将NumPy库导入到当前程序中。
  1. NumPy库的别名
import numpy as np
myArr=np.array([0,1,2,3,4,5])
print(myArr)
# [0 1 2 3 4 5]
# import numpy as np定义了np作为Numpy库的别名
  1. Numpy数组
    创建NumPy数组的两种语法是:
    myArray=np.array([v1,v2,v3,…]) # 第一个语法
    myArray=np.arange(v1,v2) # 第二个语法
    arange(v1,v2)返回v1到v2-1的数字,例如arange(1,5)返回1,2,3,4
import numpy as np
arr1=np.array([0,1,2,3,4,5])
print(arr1)
arr2=np.arange(0,6)  # 不包括6
print(arr2)
# [0 1 2 3 4 5]
# [0 1 2 3 4 5]
  1. 0维度的数组
    0维数组称为标量,其元素只是一个值。
    创建零维数组的语法如下:
    myArray=np.array(value)
import numpy as np
myArray=np.array(100)
print(myArray)
# 100
  1. 1维数组
    一维数组包含多个值。
    创建一维数组的语法如下:
    myArray=np.array([value1,value2,…])
import numpy as np
myArray=np.array([0,1,2,3,4,5])
print(myArray)
# [0 1 2 3 4 5]
  1. 2维数组
    二维数组包含多个一维数组。
    创建一个二维数组的语法如下:
    myArray=np.array([[v1,v2,v3],[v4,v5,v6]])
import numpy as np
myArray=np.array([[0,1,2],[3,4,5]])
print(myArray)
# [[0 1 2][3 4 5]]
  1. 3维数组
    三维数组包含多个二维数组。
    创建三维数组的语法如下:
    myArray=np.array([[[v1,v2,v3],[v4,v5,v6], [v7,v8,v9]]])
import numpy as np
myArr=np.array([[[0,1,2],[3,4,5],[6,7,8]]])
print(myArr)
# [[[0 1 2][3 4 5][6 7 8]]]
  1. 高维数组
    定义更高维度数组的语法是:ndmin = number
    " number "表示数组中有多少维。
import numpy as np
arr3=np.array([0,1,2,3],ndmin=3)  # 定义三维数组
arr4=np.array([0,1,2,3],ndmin=4)  # 定义四维数组
arr5=np.array([0,1,2,3],ndmin=5)  # 定义五维数组
print(arr3)
print(arr4)
print(arr5)
# [[[0 1 2 3]]]
# [[[[0 1 2 3]]]]
# [[[[[0 1 2 3]]]]]
  1. 维数
    检查数组的维数的语法:
    myArray.ndim
import numpy as np
arr0=np.array(100)  # 0维
arr1=np.array([0,1,2,3,4,5])  # 1维
arr2=np.array([[0,1,2],[3,4,5]])  # 2维
arr3=np.array([[[0,1,2],[3,4,5],[6,7,8]]]) # 3维
print(arr0.ndim)
print(arr1.ndim)
print(arr2.ndim)
print(arr3.ndim)
# 0
# 1
# 2
# 3
  1. 访问数组元素
    我们可以使用数组下标来访问数组元素。每个数组元素都有自己的索引。数组的索引从0开始。
    访问数组元素的语法是:
    myArray[index]
import numpy as np
myArray=np.array([10,11,12,13,14])
print(myArray[0])
print(myArray[4])
# 10
# 14
  1. 计算元素的值
    我们可以通过使用数组下标来计算数组元素的值。
import numpy as np
myArray=np.array([10,11,12,13,14])
print(myArray[0]+myArray[3])
print(myArray[1]*myArray[2])
# 23
# 132
  1. 访问2维数组
    我们可以通过索引访问二维数组
    一个二维数组包含多行和多列
    访问二维数组的语法是:
    myArray[row,col]
import numpy as np
arr=np.array([[10,11,12,13,14],[15,16,17,18,19]])
print("The value in row 0 and col 3 is:", arr[0,3])
print("The value in row 1 and col 2 is:", arr[1,2])
# The value in row 0 and col 3 is:13
# The value in row 1 and col 2 is:17
  1. 最后一个索引
    我们可以用“-1”表示最后一个索引。
    myArray[-1,-1] # 访问最后一行和最后一列
import numpy as np
arr=np.array([[10,11,12,13,14],[15,16,17,18,19]])
print("The value in row 0 and last col is:", arr[0,-1])
print("The value in last row and col 2 is:", arr[-1,2])
print("The value in last row and last col is:", arr[-1,-1])
# The value in row 0 and last col is:14
# The value in row 0 and last col is:17
# The value in row 0 and last col is:19
  1. NumPy切片
    我们可以获取从一个索引到另一个索引的一部分元素:[startstep]
    end的值为index-1。默认step为1
import numpy as np
arr=np.array([10,11,12,13,14,15,16,17,18])
print(arr[2:7:2])
print(arr[2:7])
# [12 14 16]
# [12 13 14 15 16])
  1. 在默认情况下切片
    在[start: end: step]中,默认值为:
    start默认值为0
    end默认值为最后的索引(-1)的下一个索引
    step默认为1
import numpy as np
arr=np.array([10,11,12,13,14,15,16,17,18])
print(arr[:3])
print(arr[2:])
# [10 11 12]
# [12 13 14 15 16 17]
  1. 负切片
    负切片是指从最后引用索引arr[-index1:-index2]
    访问从-index1到-index2-1的元素,从末尾引用索引。
import numpy as np
arr=np.array([10,11,12,13,14,15,16,17,18])
print(arr[-5:-2])
print(arr[-7:-3])
# [14 15 16]
# [12 13 14 15]
  1. 2D切片
    2D切片的第一个语法是:
    myArray[row1:row2,col1:col2]
    访问从row1到rpw2-1和从col1到col2-1的元素
import numpy as np
arr=np.array([[10,11,12,13,14],[15,16,17,18,19]])
print(arr[0:2,2:4])
# [[12 13][17 18]]

2D切片的第二个语法是:
myArray[row1,col1:col2]
访问指定行(row1),列从col1到col2-1的元素

import numpy as np
arr=np.array([[10,11,12,13,14],[15,16,17,18,19]])
print(arr[0,2:4])
# [12 13]

2D切片的第三个语法是:
myArray[row1:row2,col1]
访问指定列col1,行从row1到row2-1的元素

import numpy as np
arr=np.array([[10,11,12,13,14],[15,16,17,18,19]])
print(arr[0:2,2])
# [12 17]
  1. NumPy的数据类型
    NumPy基础知识_第1张图片

  2. 类型码
    每个NumPy数据类型都有自己的类型码。例如:
    int64的类型码为“i8”,字符串的类型代码为“S”或“|S”
    NumPy基础知识_第2张图片

  3. 数据类型检查
    数据类型检查的语法是:myArray.dtype

import numpy as np
arr1=np.array([10,11,12,13])
print(arr1.dtype)
arr2=np.array(['Matlab','in','8','Hours'])
print(arr2.dtype)
# int64
# 

代码解析:
arr1.dtype和arr2.dtype返回数组的数据类型
int64表示64位整数类型

  1. 设置字符串数组
    设置数组数据类型的语法:
    dtype=“datatype”
import numpy as np
myArr=np.array([10,20,30,40],dtype="S")
print(myArr.dtype)
# |S2

代码解析
dtype='S’设置数组的数据类型为字符串
" | "符号表示这里不适用使用字节顺序符号。
“S2”表示数组数据类型为String,每个元素的大小为2字节。

  1. 设置Int数组
    设置数组数据类型的语法:
    dtype=“datatype”
import numpy as np
nyArr=np.array([10,11,12,13],dtype="i2")
print(myArr.dtype)
# int16

代码解析:
dtype='i2’设置数组的数据类型为int16
'i2’是int16的类型码

  1. 数据类型转换
    转换数组数据类型的语法
    myArr.astype(‘data_type’)
# astype('i')将数组转换成整数类型
import numpy as np
myArr=np.array([0.99,0.88,0.23,2.99])
arr=myArr.astype('i')
print(arr)
print(arr.dtype)
# [0 0 0 2]
# int32

# astype(bool)将数组转换成bool类型
import numpy as np
myArr=np.array([0,1,2,3])
arr=myArr.astype(bool)
print(arr)
print(arr.dtype)
# [False True True True]
# bool

  1. 数组拷贝
    数组拷贝的语法是:array2=array1.copy()
import numpy as np
arr1=np.array([0,1,2,3,4])
arr2=arr1.copy()
arr2[0]=100
print(arr1)
print(arr2)
# [0 1 2 3 4]
# [100 1 2 3 4]

代码解析:
将arr1数组拷贝到数组arr2
arr1与arr2相互不影响

  1. 数组的视图
    创建数组视图的语法:array2=array1.view()
import numpy as np
arr1=np.array([0,1,2,3,4])
arr2=arr1.view()
arr2[0]=100
print(arr1)
print(arr2)
# [100 1 2 3 4]
# [100 1 2 3 4]

代码解析:
创建arr1数组视图arr2
arr1与arr2相互影响

  1. 检查相关函数
    “array.base"可以检查新数组和旧数组的相关性。
    如果newArray是从oldArray复制过来的,那么” newArray.base将返回“None”。
    如果newArray是oldArray的视图,则" newArray.base"将返回一个新的数组。
import numpy as np
myArr=np.array([0,1,2,3,4])
copyArr=myArr.copy()
viewArr=myArr.view()
print(copyArr.base)
print(viewArr.base)
# None
# [0 1 2 3 4]
  1. 数组的shape
    数组形状是指数组中有多少行和多少列。语法为:array.shape
import numpy as np
myArr=np.array([[0,1,2,3],[4,5,6,7],[2,4,6,8]])
print(myArr.shape)
# (3, 4)
# myArr.shape返回一个(3,4),这表示“myArr”有3行和4列。

myArr=np.array([1,2,3,4,5],ndim=2)
print(myArr)
print("The array shape is:", myArr.shape)
# [[1 2 3 4 5]]
# The array shape is:(1,5)
# ndmin=2表示建立一个二维数组
# myArr.shape返回一个(1,5),这表示“myArr”有1行和5列。
  1. reshape从1D到2D
    数组reshape意味着修改数组的shape
    reshape从1D到2D的语法是:2dArray=1dArray.reshape(rows,cols)
import numpy as np
myArr=np.array([0,1,2,3,4,5,6,7,8,9,10,11])
newArr=myArr.reshape(3,4)
print(newArr)
# [[0 1 2 3][4 5 6 7][8 9 10 11]]
# myArr.reshape(3,4)表示把1D数组reshape成2d数组,“myArr”有3行和4列。

数组reshape的要求是:原始数组中的元素个数必须等于维度的乘积。

  1. 未知维度
    如果在reshape方法中没有为其中一个维度指定确切的数字,则可以使用“-1”作为参数。NumPy会自动计算这个数字。三个语法是:
    arr.reshape(-1,rows,cols)
    arr.reshape(layer,-1,cols)
    arr.reshape(layer,rows,-1)
import numpy as np
myArr=np.array([1,2,3,4,5,6,7,8,9,10,11,12])
newArr=myArr.reshape(-1,2,3)
print(newArr)
# [[[1 2 3][4 5 6]][[7 8 9][10 11 12]]]
  1. Flatten数组
    flatten数组意味着将多维数组reshape到1d数组
    将数组reshape到1d数组的语法是:
    myArr.reshape(-1)
import numpy as np
myArr=np.array([[1,2,3],[4,5,6],[7,8,9]])
newArr=myArr.reshape(-1)
print(newArr)
# [1 2 3 4 5 6 7 8 9]

代码解析:
myArr是一个2D数组
myArr.reshape(-1)使用-1参数reshape2D数组为1D数组

  1. 1D数组迭代
    遍历一维数组的语法是:
    for num in myArray
import numpy as np
myArr=np.array([10,11,12])
for num in myArr:
	print(num)
# 10
# 11
# 12
  1. 迭代二维数组
    遍历二维数组的语法是:
    for num in myArray
import numpy as np
myArr=np.array([[10,11,12],[13,14,15]])
for num in myArr:
	print(num)
# [10 11 12]
# [13 14 15]
  1. 迭代三维数组
    遍历三维数组的语法是:
    for num in myArray
import numpy as np
myArr=np.array([[[10,11,12],[13,14,15]],[[16,17,18],[19,20,21]]]
for num in myArr:
	print(num)
# [[10,11,12],[13,14,15]]
# [[16,17,18],[19,20,21]]
  1. nditer()
    要获得每个实际的元素值(标量),可以使用niter()来遍历数组中的所有元素。语法是:nditer(myArray)
import numpy as np
myArr=np.array([[10,11],[12,13]])
for num in np.nditer(myArr):
	print(num)
# 10
# 11
# 12
# 13
  1. 使用step来遍历
    使用step来遍历主要用于二维数组,语法为:
    nditer(myArr[:,::step])
import numpy as np
myArr=np.array([[10,11,12,13],[14,15,16,17]])
for num in np.nditer(myArr[:,::2]):
	print(num)
# 10
# 12
# 14
# 16
  1. 列举数组
    可以为数组中的每个元素指定序号。ndenumerate(myArray)
import numpy as np
myArr=np.array([0,1,2,3])
for id,num in np.ndenumerate(myArr):
	print(id,num)
# (0,) 0
# (1,) 1
# (2,) 2
# (3,) 3

  1. 数组连接
    连接数组是指将两个或多个数组的元素连接到一个数组中。连接数组的语法为:np.concatenate((arr1,arr2))
import numpy as np
a1=np.array([0,1,2])
a2=np.array([3,4,5])
myArr=np.concatenate((a1,a2))
print(myArr)
# [0 1 2 3 4 5]
# np.concatenate((a1,a2))将数组a1和a2连接成单一数组
  1. 根据坐标轴进行连接
    当连接两个数组时候,使用参数axis来表示连接维度
    axis=0,垂直方向连接
    axis=1,水平方向连接
import numpy as np
a1=np.array([[11,12,13],[14,15,16]])
a2=np.array([[21,22,23],[24,25,26]])
myArr=np.concatenate((a1,a2),axis=0)
print(myArr)
# [[11 12 13][14 15 16][21 22 23][24 25 26]]
myArr2=np.concatenate((a1,a2),axis=1)
print(myArr2)
# [[11 12 13 21 22 23][14 15 16 24 25 26]]
# axis默认是0

  1. 根据坐标轴进行堆叠
    stack()可以连接两个数组,但它将两个一维数组连接为一个二维数组,并将两个二维数组连接为一个三维数组。语法为:
    np.stack((array1,array2),axis=0)
    np.stack((array1,array2),axis=1)
a1=np.array([[11,12,13],[14,15,16]])
a2=np.array([[21,22,23],[24,25,26]])
myArr=np.stack((a1,a2),axis=0)
print(myArr)
# [[[11,12,13],[14,15,16]], [[21,22,23],[24,25,26]]]

myArr2=np.stack((a1,a2),axis=1)
print(myArr2)
# [[[11,12,13],[21,22,23]], [[14,15,16],[24,25,26]]]
# “np.Stack((a1, a2),axis=1) "水平连接两个数组,因为参数" axis=1 "。
  1. 垂直连接数组
    vstack()垂直连接数组,语法是:
    np.vstack((arr1,arr2))
import numpy as np
a1=np.array([[11,12,13],[14,15,16]])
a2=np.array([[21,22,23],[24,25,26]])
myArr=np.vstack((a1,a2))
print(myArr) 
# [[[11,12,13],[14,15,16]], [[21,22,23],[24,25,26]]]
  1. 水平连接数组
    hstack()垂直连接数组,语法是:
    np.hstack((arr1,arr2))
import numpy as np
a1=np.array([[11,12,13],[14,15,16]])
a2=np.array([[21,22,23],[24,25,26]])
myArr=np.hstack((a1,a2))
print(myArr)
# [[11 12 13 21 22 23][14 15 16 24 25 26]]

  1. 1D数组连接为3D数组
    语法是:np.dstack((arr1,arr2))
    默认情况下,是水平连接
import numpy as np
a1=np.array([11,12,13])
a2=np.array([14,15,16])
myArr=np.dstack((a1,a2))
print(myArr)
# [[[11 14][12 15][13 16]]]
  1. 2D数组连接为3D数组
    语法是:np.dstack((arr1,arr2))
    默认情况下,是水平连接
import numpy as np
a1=np.array([[11],[12],[13]])
a2=np.array([[14],[15],[16]])
myArr=np.dstack((a1,a2))
print(myArr)
# [[[11 14][[12 15]][[13 16]]]
  1. 数组排序
    语法是:np.sort(array)
myArr = np.array([[ 2, 0, 3, 9], [ 7, 5, 6, 4 ]])
print(np.sort(myArr))
# [[0, 2, 3, 9], [4, 5, 6, 7]]
  1. 拆分数组
    拆分数组就是将一个数组分成几个数组
    语法是:array_split(array,number)
    参数number意思是拆分成多少个数组

import numpy as np
myArr=np.array([10,20,30,40,50,60])
arr=np.array_split(myArr,3)
print(arr)
# [array([10, 20]), array([30, 40]), array([50, 60])]

myArr2=np.array([10,20,30,40,50,60,70])
arr2=np.array_split(myArr2,3)
print(arr2)
# [array([10, 20, 30]), array([40, 50]), array([60, 70])]
  1. 访问拆分后的数组
    语法是:arr[index]
import numpy as np
myArr=np.array([10,20,30,40,50,60])
arr=np.array_split(myArr,3)
print(arr)
print(arr[0])
print(arr[1])
print(arr[2])
# [array([10, 20]), array([30, 40]), array([50, 60])]
#[10 20]
#[30 40]
#[50 60]
  1. 拆分二维数组
    语法是:array_split(array,number)
    参数number意思是拆分成多少个数组
import numpy as np
myArr=np.array([[1,2],[3,4],[5,6],[7,8]])
arr=np.array_split(myArr,2)
print(arr)
# [array([[1, 2], [3, 4]]), array([[5, 6],[7, 8]])]
  1. 垂直分拆
    语法是:vsplit(array,number)
    参数number意思是拆分成多少个数组
import numpy as np
myArr=np.array([[1,2],[3,4],[5,6],[7,8]])
arr=np.vsplit(myArr,2)
print(arr)
#[array([[1, 2],
#      [3, 4]]), array([[5, 6],
#      [7, 8]])] 

  1. 水平分拆
import numpy as np
myArr=np.array([[1,2],[3,4],[5,6],[7,8]])
arr=np.hsplit(myArr,2)
print(arr)
# [array([[1],[3],[5],[7]]),
#array([[2], [4], [6], [8]])]

  1. 找到数组索引
    我们可以通过元素值找到匹配的索引,并返回一个包含匹配索引的新数组。
    语法是:where(array==value)
import numpy as np
myArr=np.array([0,93,2,93,4,5,93])
arr=np.where(myArr==93)
print(arr)
# (array([1, 3, 6], dtype=int64),)
# 奇数偶数
even=np.where(myArr%2==0)
print(even)
odd=np.where(myArr%2==1)
print(odd)
# (array([0, 2, 4], dtype=int64),)
# (array([1, 3, 5, 6], dtype=int64),)
  1. 搜索位置索引
    语法1:searchsorted(array,value)
    语法2:searchsorted(array,[v1,v2,v3,…])
import numpy as np
myArr=np.array([24,35,46,57,68])
arr1=np.searchsorted(myArr,45)
arr2=np.searchsorted(myArr,47)
print(arr1)
print(arr2)
# 2
# 3
# searchsorted(myArr,45)发现45应该放置的索引值,即使45不在数组中

arr=np.searchsorted(myArr,[15,45,65])
print(arr)
# [1 6 6]
  1. 使用bool值过滤数组
    我们可以使用布尔值来过滤数组中的元素。
    如果该值为true,则将显示元素。
    如果值为false,则不会显示元素。
import numpy as np
myArr=np.array([0,1,2,3,4,5])
arr=myArr[[True, False, True, False, False, True]]
print(arr)
# [0 2 5]
  1. 根据条件过滤数组
    我们可以使用条件来过滤数组的元素。
    如果值满足条件,将显示元素。
    如果值不满足条件,则不会显示元素。
import numpy as np
myArr=np.array([0,1,2,3,4,5])
filter=myArr>=2
arr=myArr[filter]
print(filter)
print(arr)
# [False False  True  True  True  True]
#[2 3 4 5]
  1. NumPy ufuncs
    ufuncs意思是通用函数,实际上是NumPy函数。利用“ufuncs”实现向量化,快速运行NumPy程序。我们可以将“ufunc”视为NumPy内置函数。
import numpy as np
list1=[10,20,30,40]
list2=[80,70,60,50]
list3=np.add(list1,list2)  # add() is a NumPy ufunc
print(list3)
# [90 90 90 90]
  1. 检查NumPy ufunc
    语法:type(np.function_name)
    如果返回 ,则表示是一个ufunc
import numpy as np
print(type(np.add))
print(type(np.subtract))
print(type(np.multiply))
print(type(np.divide))
# 
# 
# 
# 
  1. 创建自己的ufunc
    创建自己的ufunc的步骤如下:
    1.定义普通的Python函数
    2.将定义好的函数添加到NumPy的ufunc库,语法是:frompyfunc(myFunction,number1,number2)
    number1:输入参数个数
    number2:输出参数个数
import numpy as np
def myMultiply(a,b):
	return a*b
myMultiply=np.frompyfunc(myMultiply,2,1)
print(myMultiply([0,1,2,3,4],[5,6,7,8,9]))
# [0 6 14 24 36]

  1. 算术ufunc
import numpy as np
arr1=np.array([10,20,30])
arr2=np.array([1,2,3])
a=np.add(arr1,arr2)
s=np.subtract(arr1,arr2)
m=np.multiply(arr1,arr2)
d=np.divide(arr1,arr2)
p = np.power(arr1, arr2)
m = np.mod(arr1, arr2)
r = np.remainder(arr1, arr2)

print(a)
print(s)
print(m)
print(d)
print(p)
print(m)
print(r)
# [11 22 33]
#[ 9 18 27]
#[10 40 90]
#[10. 10. 10.]
#[10 400 27000]
#[0 0 0]
#[0 0 0]
  1. trunc()&fix()
    trunc()&fix()删除小数点并返回最接近零的数字.
    语法:
    trunc([floating_numbers])
    fix([floating_numbers])
import numpy as np
t = np.trunc([-2.7, 2.7])
f = np.fix([-2.7,2.7])
print(t)
print(f)
# [-2.,2.]
# [-2.,2.]
  1. around(),ceil(),floor()
    around()返回四舍五入的值
    ceil()返回一个大于自身的最小整数
    floor()返回小于自身的最大整数
import numpy as np
a=np.around(7.555,2)  # 2表示保留两位有效数字
c=np.ceil(7.555)
f=np.floor(7.555)
print(a)
print(c)
print(f)
# 7.56
# 8.0
# 7.0

  1. log2(),log(),log()
import numpy as np
arr=np.arange(1,4)
print(np.log2(arr))
print(np.log10(arr))
print(np.log(arr))  # 以e为底
# [0.        1.        1.5849625]
# [0.         0.30103    0.47712125]
# [0.         0.69314718 1.09861229]
  1. 以任何数字为底的log
    form math import log
    log(number,base)
from math import log
import numpy as np
print(log(16,4))
# 2
  1. 数组求和
    我们可以得到多个数组中所有元素值的和。sum([array1,array2,array3])
import numpy as np
a1=np.array([10,20,30])
a2=np.array([10,20,30])
a3=np.array([10,20,30])
myArr=np.sum([a1,a2,a3])
print(myArr)
# 180

  1. 求和 & axis=0
    参数" axis=0 "可以使NumPy垂直求和多个数组中的元素值。
import numpy as np
a1=np.array([10,20,30])
a2=np.array([10,20,30])
myArr=np.sum([a1,a2],axis=0)
print(myArr)
# [20 40 60]
  1. 求和 & axis=1
    参数" axis=1 "可以使NumPy水平求和多个数组中的元素值。
import numpy as np
a1=np.array([10,20,30])
a2=np.array([10,20,30])
myArr=np.sum([a1,a2],axis=1)
print(myArr)
# [60 60]
  1. 累加和
import numpy as np
myArr=np.array([10,20,30,40])
arr=np.cumsum(myArr)
print(arr)
# [10 30 60 100]  
# 计算过程[ (10) (10+20) (10+20+30) (10+20+30+40) ]
  1. 数组的差分
    计算规则:下一个元素-上一个元素
import numpy as np
myArr=np.array([3,5,7,8])
arr=np.diff(myArr)
print(arr)
# [2 2 1]
  1. 多次差分
    语法:diff(myArr,n=number)
    参数number是差分的次数
import numpy as np
myArr=np.array([2,5,6,8])
arr=np.diff(myArr,n=2)
print(arr)
# [-2 1]
# diff(myArr,n=2)返回数组myArr经过两次差分后的结果
  1. 数组的乘积
import numpy as np
myArr=np.array([10,20,30,40])
num=np.prod(myArr)
print(num)  # 240000=10*20*30*40
# np.prod(myArr)返回myArr数组中所有元素的乘积
  1. 多个数组的乘积
    我们可以得到多个数组中所有元素值的乘积。
import numpy as np
myArr1=np.array([10,20])
myArr2=np.array([30,40])
num=np.prod([myArr1,myArr2])
print(num)  # 240000=10*20*30*40
  1. product & axis=0
import numpy as np
myArr1=np.array([10,20])
myArr2=np.array([30,40])
num=np.prod([myArr1,myArr2],axis=0)
print(num)  
# [300 800]
  1. product&axis=1
import numpy as np
myArr1=np.array([10,20])
myArr2=np.array([30,40])
num=np.prod([myArr1,myArr2],axis=1)
print(num)  
# [200 1200]
  1. Cumulative Product
import numpy as np
myArr = np.array([1, 2, 3, 4])
arr = np.cumprod(myArr)
print(arr)
# [ 1  2  6 24]
# [ (1) (1X2) (1X2X3) (1X2X3X4) ]
  1. 数组的商
import numpy as np
arr=np.arange(2,7)
print(divmod(arr,2))
# 商,余数
# (array([1, 1, 2, 2, 3], dtype=int32), array([0, 1, 0, 1, 0], dtype=int32))
  1. 最小公倍数
    Lowest Common Multiple(LCM)
import numpy as np
myArr=np.array([2,7,8])
num=np.lcm.reduce(myArr)
print(num)
# 56
  1. 最大公约数
    Greatest Common Divisor(GCD)
import numpy as np
myArr=np.array([12,6,21,9,24])
num=np.gcd.reduce(myArr)
print(num)
# 3

计算过程
12/3=4, 6/3=2, 21/3=7, 9/3=3, 24/3=8.

  1. 重新排列数组
    有两种方法可以随机重新排列数组的元素序列:
    random.permutation(array)
    random.shuffle(array)
    两个函数的区别是:" permutation() “只改变数组的副本。” shuffle() "改变原始数组。
from numpy import random
import numpy as np
myArr=np.array([1,2,3,4,5])
arr=random.permutation(myArr)
print(arr)
random.shuffle(myArr)
print(myArr)
# [1 4 2 3 5]
#[3 5 2 4 1]

你可能感兴趣的:(必备知识,NumPy知识,numpy)