为什么直接进入 numpy了呢,因为我走人工智能的路线,所以先了解这个数组模块的一些基础知识,然后穿插更深一级的语法,这样会有用一点,我个人感觉,不管好坏,先看看numpy里有些什么吧。我现在用的是anaconda的jupyter notebook 为了安装它可花了不少时间。
先看看学了什么。
输出一个数组
import numpy as np
A = np.array([1,2,4,3,5])
A
Out[9]:
array([1, 2, 4, 3, 5])
np.array()里面的数组可以是多维的,理论上可以输出N维数组
查看 数组是多少维度的,使用X.ndim方法,X是数组
B = np.array([[1,2],[3,4],[5,6]])
B.ndim # B.nidm 指的是数组的维度 判断的方式就是看有几个方括号就是几维数组
输出是:
2
接着就是 查看是多少行多少列的方法 X.shape X是数组。 翻译过来就是 X的形状
B.shape # 数组属性,有多少行,多少列
输出:
(3,2) # 3行 两列
如何生成一个连续数组呢?比如我想输出 0到10内步进为1的数组呢?
numpy有一个叫做arange的方法 输出一个连续的数组
C = np.arange(1,50,5) # arange() 生成一个连续数组,范围是 1 到 50 然后步进是5
C
array([ 1, 6, 11, 16, 21, 26, 31, 36, 41, 46])
如果想输出规定范围内等分的数组呢?
单词 linspace 等分的意思
D = np.linspace(0,20,12) # np.linspace(0,20,12) 把0到20等分12分,然后输出
D
array([ 0. , 1.81818182, 3.63636364, 5.45454545, 7.27272727,
9.09090909, 10.90909091, 12.72727273, 14.54545455, 16.36363636,
18.18181818, 20. ])
好,今天就先记住这几个,今天是2019.2.27
未完待续。。。。。。
2.28 接上~
np.ones(pra) 这是个输出1的数组,根据参数来输出
如果是np.ones(5),则会输出一维数组 5个1
如果给定一个数组参数或者元组参数 ,则会输出一个 行列为参数的二维数组 比如:
np.ones([3,3]) # 这个是返回一个跟输入相同类型的数组,容量由输入参数决定
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
另外一个就是np.zeros(5) 这个操作和 np.ones(5)一样
np.zeros([4,3],dtype='int') # 根据输入参数类型输出相应的0;
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
numpy.eye(N,M=None, k=0, dtype=<type ‘float’>)
这个是输出一个对角线数组,如果只输入一个整数,则会输出 行列都是这个整数的数组,并且会在第一个数字开始左上角到右下角的对角线
如果输入第二个参数,则变为 第一个为行 第二个为列
第三个参数是对角线开始的地方,如果k=0,则从左边第一个数字开始到右下角
如果是 -1 则 从-1位置开始往下对角 ,也就是从第一列的第二个数字开始往下对角
同理 k = 1 从第一行第二个数字开始往下对角
看代码
np.eye(4,4,-1) # 如果只输一个参数,则返回行数列数都是该参数的且对角线是1的数组,第二个参数是 指定多少列,
#第三个参数从第几列开始对角线 (如果有两个参数,则第一个是行数,第二个数列数)
# 参数 4,4,-1 表示 行是4 列是4 从-1列开始输出对角线
array([[0., 0., 0., 0.],
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.]])
下一个是 随机数组
np.random.randn(2,3) # 随机输出 指定参数的数组 输出为浮点数
array([[-0.12691544, 0.32523151, 0.35195496],
[-0.05785743, 1.90173634, 0.05631528]])
np.random.randint(0,10,5) # 输出为整数
array([3, 9, 2, 8, 6])
下一个是 把一维数组变成二维数组的函数
E = np.arange(0,51,10).reshape(6,1) + np.arange(6)
'''
第一个 np.arang(0,51,5) 输出 0到50 步进为5的一维数组,
第二个 .reshape(6,1) 是把数组改变成二维数组,并且行数是6,列为1
第三个 + np.range(6) 是把前边的6行1列的数组扩大,每一行都输出6个连续的数字
'''
E
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]])
2.28 未完待续。。。。。。。