numpy入门(一)

  python标准库array能保存数组类型数据,然而这个类型不支持多维数据,处理函数也不够丰富,至此,numpy已经成为了科学计算事实上的标准库。

  numpy库处理的最基本数据类型是由同种元素构成的多维数组(ndarray),简称“数组”。数组中所有元素的种类必须相同,元素可索引,序号从0开始。ndarray类型的维度(dimensions)叫做轴(axis),轴的个数叫做秩(rank)。一维数组的秩是1,二维数组的秩是2.

2.3.1 numpy数组

 

创建数组:

  1. 使用python列表

  1. numpy函数

可以直接使用python列表来创建数组。

  • a = np.array([1,2,3,4])

  • b = np.array([[1,2], [3,4], [5,6]])

查看array的属性,即维度和类型:

b.ndim         2       #二维数值

b.shape       (3,2)    #3行2列

b.dtype        dtype('int32')  #查看数组里元素的数据类型

 

使用numpy函数来创建数组;

arange();linspace();ones()/zeros()/full();eye()

c = np.arange(10)

d = np.linspace(0, 2, 11)   #[0,2]分成11等分

 

np.ones((3, 3))     #参数是元组,返回3行3列的数组,数组用1填充

np.zeros(('shape')) #根据shape返回用0填充的数组

np.full((shape), number)) #用所给数字填充所给shape的数组

np.eye(4)     #生成对角矩阵

np.random.randn(6, 4)    #创建 6  × 4的随机数组

 

rand&randn:

rand是按照给定shape,填入[0,1]之间均匀分布的随机样本

randn是按照给定shape,填入符合标准正态的随机数组

 

访问数组和矩阵元素

索引、分片

矩阵也可以索引:

numpy入门(一)_第1张图片

这里先生成一个6行6列的矩阵,利用了广播的方法

np.arange(start, end[, step]):和python的range函数很像

列向量会自动转换为行向量形式

当然也可以通过布尔值索引:

numpy入门(一)_第2张图片

 

实质是根据a%2 == 0,生成对应的布尔值,然后返回true的值的数组

 

注意!!!

大部分情况下,numpy是共享内存的,独立保存要进行显示备份。可以通过np.may_share_memory()函数判断两个数组是否共享内存:

numpy入门(一)_第3张图片

显示备份用.copy()

numpy入门(一)_第4张图片

np.may_share_memory(a,b)     >>>False

 

举例:埃拉托斯特尼筛选法打印[0,100]质数

 

要得到自然数 n 以内的全部质数,必须把不大于sqrt(n)的所有质数的倍数剔除,剩下的就是素数;

 

下面这个动图展示了这个算法的原理,从2开始,以2为步长,每跳经过的数字都不是质数;接着从3开始,然后5,7;到7为止;

numpy入门(一)_第5张图片

代码:

numpy入门(一)_第6张图片

首先建立一个100个元素的数组,用来标记是否为质数;

is_prime[0] = False #吧1去掉

for i in range(2, n_max):    #从2开始检索

    if i in a[is_priem] :

        is_prime[(i**2 - 1)::i] = False #减一是修正从0开始检索的问题,i=2,就从3:100,将跳过的数字全标记为false,依此检索;余下的即为1:100之间的质数了。

你可能感兴趣的:(python可视化)