Python中的Numpy
Python中的Numpy是什么?
Numpy是一个数组处理程序包,它提供高性能的多维数组对象和实用程序来处理数组。它是使用python进行科学计算的基本软件包。它是一个线性代数库,对于使用python进行数据科学非常重要,因为pyData生态系统中的几乎所有库都依赖Numpy作为其主要构建模块之一。它非常快,因为它与C绑定。
numpy提供的许多功能中的一些功能一如既往,
N维数组对象
广播功能
与C/C++集成的实用程序
有用的线性代数和随机数功能
安装Numpy
1)使用点子
pip install numpy
安装输出
pip install numpy Collecting numpy Downloading https://files.pythonhosted.org/packages/60/9a/a6b3168f2194fb468dcc4cf54c8344d1f514935006c3347ede198e968cb0/numpy-1.17.4-cp37-cp37m-macosx_10_9_x86_64.whl (15.1MB) 100% |████████████████████████████████| 15.1MB 1.3MB/s Installing collected packages: numpy Successfully installed numpy-1.17.4
2)使用水蟒
conda install numpy
numpy中的数组
Numpy的主要对象是齐次多维数组。numpy数组有两种类型:向量和矩阵。向量严格是一维数组,矩阵是二维。
在Numpy中,尺寸称为轴。轴数为等级。以下示例列出了ndarray对象的最重要属性。
示例
#进口包装 import numpy as np #创建数组 arr = np.array([[11,12,13],[14,15,16]]) print("Array is of type {}".format(type(arr))) print("No. of dimensions {}".format(arr.ndim)) print("shape of array:{}".format(arr.shape)) print("size of array:{}".format(arr.size)) print("type of elements in the array:{}".format(arr.dtype))
输出结果
Array is of type <class 'numpy.ndarray'> No. of dimensions 2 shape of array:(2, 3) size of array:6 type of elements in the array:int64
创建一个numpy数组
创建numpy数组的方式有多种。例如,可以使用将列表或元组强制转换为numpy数组。array()方法(如以上示例中所述)。数组将序列的序列转换为2维数组,将序列的序列转换为3维数组,依此类推。
为了创建数字序列,NumPy提供了一个称为arange的函数,该函数返回数组而不是列表。
语法:
#返回给定间隔内的均匀间隔的值。 arange([start,] stop [,step], dtype=None)
示例
x = np.arange(10,30,5) print(x) #输出:[10152025]
函数零创建一个由零组成的数组,函数一个创建一个由零组成的数组,函数空创建一个数组,其初始内容是随机的,并取决于内存的状态。默认情况下,创建的数组的dtype为float64。
示例
#进口包装 import numpy as np x = np.zeros((3,4)) print("np.zeros((3,4))...") print(x) x = np.ones((3,4)) print("np.ones((3,4))...") print(x) x = np.empty((3,4)) print("np.empty((3,4))...") print(x) x = np.empty((1,4)) print("np.empty((1,4))...") print(x)
输出结果
np.zeros((3,4))... [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]] np.ones((3,4))... [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]] np.empty((3,4))... [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]] np.empty((1,4))... [[1.63892563e-316 0.00000000e+000 2.11026305e-312 2.56761491e-312]]
numpy函数
NumPy提供了一些更多的函数来创建数组,
1)linspace()
它在指定的间隔内返回均匀间隔的数字。
语法:
linspace(start, stop, num=50, endpoint=True, restep=False, dtype=None)
示例
#进口包装 import numpy as np x = np.linspace(1,3,num=10) print(x)
输出结果
[1. 1.22222222 1.44444444 1.66666667 1.88888889 2.11111111 2.33333333 2.55555556 2.77777778 3. ]
2)eye()
它返回一个二维数组,对角线上有一个,其他位置为零。
语法:
eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
示例
#进口包装 import numpy as np x = np.eye(4) print(x)
输出结果
[[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]]
3)random()
它创建一个带有随机数的数组
示例
#进口包装 import numpy as np x = np.random.rand(5) print("np.random.rand(5)...") print(x) x = np.random.rand(5,1) print("np.random.rand(5,1)...") print(x) x = np.random.rand(5,1,3) print("np.random.rand(5,1,3)...") print(x) #返回一个随机数 x = np.random.randn() print("np.random.randn()...") print(x) #返回带有随机数的二维数组 x = np.random.randn(2,3) print("np.random.randn(2,3)...") print(x) x = np.random.randint(3) print("np.random.randint(3)...") print(x) #返回一个随机数 in between low and high x = np.random.randint(3,100) print("np.random.randint(3,100)...") print(x) #返回长度为34的随机数数组 x = np.random.randint(3,100,34) print("np.random.randint(3,100,34)...") print(x)
输出结果
np.random.rand(5)...[0.87417146 0.77399086 0.40012698 0.37192848 0.98260636] np.random.rand(5,1)... [[0.712829 ] [0.65959462] [0.41553044] [0.30583293] [0.83997539]] np.random.rand(5,1,3)... [[[0.75920149 0.54824968 0.0547891 ]] [[0.70911911 0.16475541 0.5350475 ]] [[0.74052103 0.4782701 0.2682752 ]] [[0.76906319 0.02881364 0.83366651]] [[0.79607073 0.91568043 0.7238144 ]]] np.random.randn()... -0.6793254693909823 np.random.randn(2,3)... [[ 0.66683143 0.44936287 -0.41531392] [ 1.86320357 0.76638331 -1.92146833]] np.random.randint(3)... 1 np.random.randint(3,100)... 53 np.random.randint(3,100,34)... [43 92 76 39 78 83 89 87 96 59 32 74 31 77 56 53 18 45 78 21 46 10 25 86 64 29 49 4 18 19 90 17 62 29]
4)整形方法(形状处理)
数组的形状由沿每个轴的元素数确定,
#进口包装 import numpy as np x = np.floor(10*np.random.random((3,4))) print(x) print(x.shape)
输出结果
[[0. 2. 9. 4.] [0. 4. 1. 7.] [9. 7. 6. 2.]] (3, 4)
数组的形状可以通过各种命令进行更改。但是,shape命令返回所有修改后的数组,但不更改原始数组。
#进口包装 import numpy as np x = np.floor(10*np.random.random((3,4))) print(x) #返回数组,展平 print("x.ravel()...") print(x.ravel()) #返回形状已修改的数组 print("x.reshape(6,2)...") print(x.reshape(6,2)) #返回数组,转置 print("x.T...") print(x.T) print("x.T.shape...") print(x.T.shape) print("x.shape...") print(x.shape)
输出结果
[[3. 1. 0. 6.] [3. 1. 2. 4.] [7. 0. 0. 1.]] x.ravel()... [3. 1. 0. 6. 3. 1. 2. 4. 7. 0. 0. 1.] x.reshape(6,2)... [[3. 1.] [0. 6.] [3. 1.] [2. 4.] [7. 0.] [0. 1.]] x.T... [[3. 3. 7.] [1. 1. 0.] [0. 2. 0.] [6. 4. 1.]] x.T.shape... (4, 3) x.shape... (3, 4)
其他方法
#进口包装 import numpy as np x = np.floor(10*np.random.random((3,4))) print(x) #返回数组中的最大值 print("x.max():", x.max()) #返回数组中的最小值 print("x.min():", x.min()) #返回数组中最大值的索引 print("x.argmax():", x.argmax()) #返回数组中最小值的索引 print("x.argmin():", x.argmin())
输出结果
[[4. 0. 5. 2.] [8. 5. 9. 7.] [9. 3. 5. 5.]] x.max(): 9.0 x.min(): 0.0 x.argmax(): 6 x.argmin(): 1