python之Numpy(一)

        记录学习笔记。

        numpy简介:Numpy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,Numpy支持向量处理ndarray对象,提高程序运算速度。

        numpy类似于MATLAB,他已经帮我们对各种数学计算过程进行了封装,我们只需要熟悉他提供的方法和函数,与一些特殊语法。

目录

一,Numpy的优势

二,Numpy的安装

三,Numpy矩阵的基本属性

3.0 numpy矩阵图解

3.1 使用numpy.array()将列表转为矩阵

3.2 ndarray矩阵对象的ndim,shape,size属性

四,创建指定的具体矩阵

4.1 用dtype指定矩阵中元素的数据类型

4.2 zeros创建具体的0矩阵

4.3 ones创建具体的全1矩阵

4.4 创建具体的empty矩阵

4.5 使用arange()生成指定的矩阵

4.6 使用linspace自动分段生成数组(等差分段)

4.7 reshape()常用于修改矩阵形状

五,numpy的基础运算

5.1 矩阵的+和-运算

5.2 随机数创建数组

5.2.1 random模块下的各种函数方法一览


一,Numpy的优势

        Numpy是python的用于数据处理及科学运算的库。Numpy是基于c语言编写的,处理速度十分的快,比python自带的数据类型dict还要快。

        另外数组也可以看成是矩阵。

二,Numpy的安装

        如果当前使用的python解释器没有numpy库,则需要使用下面命令进行安装。

pip install numpy

三,Numpy矩阵的基本属性

        Numpy是基于矩阵的运算,也就是单个数字也是矩阵,可以认为一个单独的数字就是一行一列的矩阵。所以在运算之前需要将数据转换为矩阵的形式,即面向数组。

3.0 numpy矩阵图解

python之Numpy(一)_第1张图片

        上图介绍了numpy中一维,二维,三维的定义。可以有助于对矩阵对象维度属性ndim进行理解。axis表示坐标,shape表示形状,可见shape属性是一个元组,()里面有几个数字就是几维的,可以使用shape[0],shape[1],shape[2]来访问每个维度的长度。

        三维数组可以这么理解:如(3,4,5),表示3个4行5列的二维数组,在axis=0的方向进行叠加。

3.1 使用numpy.array()将列表转为矩阵

        参数是一个容器,建议使用列表里面套列表,之后便于修改矩阵任意位置的数据。

import numpy as np

#单个数字应该这么写
arr_test = [1]
#行数组这么写
arr_test = [1,2,3]
#列数组这么写
arr_test = [[1],[2],[3]]
# 参数是一个容器,建议使用列表里面套列表,之后便于修改任意位置的数据,实际上传元组也可以,但是元组不能修改
arr_test = [[1, 2, 3], [4, 5, 6]]
array = np.array(arr_test)
print(array)

        总结:numpy.array()的第一个参数是一个列表,这个列表如果是二维列表则得到的矩阵对象是二维的;如果这个列表是三维的则得到三维矩阵,如:[[[1,2,3],[4,5,6],[7,8,9]]],是一个(1,3,3)形式的三维数组,最外边存在[[[则说明为三维。

        也可以利用元组(x,y,z),如np.random.random((x,y,z)),np.ones((x,y,z)),或者ndmin=3来确定为三维。

        order参数的作用指定如何操作ndarray结构体中的数据,order首先按照C,F,A的形式把数据打散为一维数组,再从一维数组按照C,F,A的顺序取数据拼接成矩阵。详细内容在这里。地址。

        numpy.array()的其他参数如下图。

python之Numpy(一)_第2张图片

3.2 ndarray矩阵对象的ndim,shape,size属性

        依次对应矩阵的:维度,几行几列(形状),数据个数三个属性。其中ndim也称为秩,也就是该向量空间的基的数量。

import numpy as np

# 生成一个2x3的矩阵
arr_test = [[1, 2, 3], [4, 5, 6]]
array = np.array(arr_test)
print(array)
print('维度:', array.ndim)
print('是几行几列的呢?:', array.shape)
print('一共由多少个元素呢?:', array.size)
# [[1 2 3]
#  [4 5 6]]
# 维度: 2
# 是几行几列的呢?: (2, 3)
# 一共由多少个元素呢?: 6

        其他属性如下图:

python之Numpy(一)_第3张图片

四,创建指定的具体矩阵

4.1 用dtype指定矩阵中元素的数据类型

import numpy as np

arr_test = [[1, 2, 3], [4, 5, 6]]
# dtype参数的值有:np.int,np.int8,np.int16,np.int32,np.int64和np.float,np.float16,np.float32,np.float64,,bool,complex64/128,uint8-64,intp,intc等
array = np.array(arr_test, dtype=np.int)  # np.int按系统位数智能选择
print(array.dtype)

4.2 zeros创建具体的0矩阵

        图解:

python之Numpy(一)_第4张图片

        格式:numpy.zeros(shape, dtype = float, order = 'C')。

        zeros_like:根据传入的数组形状创建全为0的数组,如z=random.randint(size=(3,4)),n3 = np.zeros_like(z),用这个方法可以将一个矩阵全部元素变为0

import numpy as np

zero = np.zeros((3, 4))  # 参数是一个元组,(行数,列数),二维
print(zero)
# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]
#  [0. 0. 0. 0.]]

4.3 ones创建具体的全1矩阵

        具体用法zeros一模一样,参考zeros即可。也有ones_like()。

import numpy as np
ones = np.ones((3,4),dtype = np.int8)

4.4 创建具体的empty矩阵

        注意:里面的每一个元素并非是0,而是开辟空间所占据内存的值。用法与ones,zeroa一模一样,参数也一样。

import numpy as np
emptys = np.empty((3,4))

        空矩阵一般用于接受矩阵运算结果。out参数指定结果放在矩阵y中。

python之Numpy(一)_第5张图片

4.5 使用arange()生成指定的矩阵

        基本用法如下图:

python之Numpy(一)_第6张图片

import numpy as np

_10to20 = np.arange(10, 21, 1)
print(_10to20)
a = np.arange(12).reshape((3, 4))
print(a)
# [10 11 12 13 14 15 16 17 18 19 20]
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
         arange 函数可以传入一个整数类型的数n ,函数返回值看着像一个列表,其实返回值类型是numpy.ndarray 。这是 Numpy 中特有的数组类型。如果传入arange 函数的参数值是 n ,那么 arange 函数会返回 0 n-1 的ndarray类型的数组。
        使用arange生成二维数组的方法如下:
import numpy as np
a = np.array([np.arange(1,5),np.arange(5,9)])
print(a)
# [[1 2 3 4]
#  [5 6 7 8]]
# 注意点:arange返回的是一个ndarray对象,而不是列表

4.6 使用linspace自动分段生成数组(等差分段)

        reshape()方法一般将一个一位数组变为指定的几行几列矩阵。

import numpy as np

_1to10 = np.linspace(1, 10, 10)
print(_1to10)
print(_1to10.reshape((2,5)))
# [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
# [[ 1.  2.  3.  4.  5.]
#  [ 6.  7.  8.  9. 10.]]

4.7 reshape()常用于修改矩阵形状

        将一个矩阵每一行的数据写成一行之后再按照reshape重新生成矩阵。

五,numpy的基础运算

        一般包括矩阵的:加减运算,求逆,求转置,求伴随,矩阵的数乘,矩阵乘法等。如果需要进行相应的运算,则进行运算的矩阵必须要保持相应的格式。

        另外也介绍一些函数形式的运算方法。

5.1 矩阵的+和-运算

import numpy as np

mat1 = np.array([2, 2, 2, 2])
mat2 = np.array([1, 1, 1, 1])
print(mat1+mat2)
print(mat1-mat2)
# [3 3 3 3]
# [1 1 1 1]

5.2 随机数创建数组

        首先介绍numpy包的random模块。如下图:

python之Numpy(一)_第7张图片

5.2.1 random模块下的各种函数方法一览

        size参数用于指定矩阵的形状(random模块下使用size)。size的值是一个元组,说明矩阵的维度。

        random.seed()用于指定随机数种子,这个函数一般会以当前时间的整数值作为参数。注意:这个方法并不是numpy自己实现的,而是调用了操作系统的实现算法。可以把这个算法看成是一个黑盒子,你放进一个数,就会出来一个特定的数,并把这个数当做下一次的种子再放进去。所以当指定固定的随机数种子,则会出现一样的重复结果。

        random.random()不多说,生成0-1之间的随机数。

        random.randint(low,high,size)生成low-high之间的随机整数。

        random.randn()根据参数返回指定的矩阵,矩阵中的数字满足正态分布。

        random.normal(loc=3,scale=4,size= (2,2,3)))),loc表示正态期望,scale表示正态方差,size表示返回矩阵的形状。

import numpy as np

# np.random.random返回[0.0, 1.0)范围的随机数
np.random.random(size=None)
# size决定的是几行几列,如(3,4)表示三行四列
x = np.random.random(size=4)
y = np.random.random(size=(3, 4))

#################################################
# 随机整数np.random.randint()
# 该方法有三个参数low、high、size三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)。
# numpy.random.randint()的使用
# 生成 [0,low)范围的随机整数
x = np.random.randint(5, size=10)
print(x)
# 生成[low,high)范围的随机整数
y = np.random.randint(5, 10, size=10)
print(y)
# 生成[low,high)范围的2*4的随机整数
z = np.random.randint(5, 10, size=(2, 4))
# size=(2, 4)是说两行四列的矩阵
print(z)

#################################################
# 正态分布np.random.randn(d0,d1,…,dn)
# randn函数返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。dn表示每个维度返回值为指定维度的数组,如:(2,2,3)表示2个2行三列的矩阵凑成的三维矩阵
x = np.random.randn()
print(x)
y = np.random.randn(2, 4)
print(y)
z = np.random.randn(2, 3, 4)
print(z)
# 正太分布(高斯分布)loc:期望 scale:方差 size 形 状
print(np.random.normal(loc=3, scale=4, size=(2, 2, 3)))
np.random.seed(42)

你可能感兴趣的:(Python数据分析,python,numpy,pandas)