Python学习笔记(一):Numpy库(上)

本文是Python学习笔记的第一部分,重点介绍了Numpy库中的ndarray对象,包括数组的创建、属性、存储与读入,以及索引和切片。通过实例展示了如何利用Python列表和元组创建数组,以及使用np.arange()和np.linspace()函数生成数组。此外,还探讨了CSV、.npy格式的存储和读入,以及数组的布尔索引等高级操作。
摘要由CSDN通过智能技术生成

前言

Numpy 是 Python 专门处理高维数组计算的包。直接pip install numpy进行安装,或者安装Anaconda,其中含有大量的机器学习和数据相关的Python模块。如果在安装或者学习过程中出现什么问题的话可以进入Numpy官网查看相关信息。在使用Numpy库之前首先我们要引用它:

import numpy as np

因为每次使用Numpy中的方法或函数都要写numpy字数有点多,所以我们可以用np作为别名。


之所以要额外引入数组这一种数据结构在于它的计算效率非常高。下面是对数组和列表每个元素进行平方的运算速度对比:

先随机生成大小为10000000的数组和列表:

Array = np.arange(10000000)
List = list(range(10000000))

然后分别对其中的每个元素进行平方处理:

start1 = t.perf_counter()
Array = Array ** 2
end1 = t.perf_counter()
print("数组平方用时为{:4f}s".format(end1 - start1))

start2 = t.perf_counter()
for i in List:
    i = i ** 2
end2 = t.perf_counter()
print("列表平方用时为{:4f}s".format(end2 - start2))

得到结果:

数组平方用时为0.021923s
列表平方用时为2.955364s

所以我们可以看出二者的运算速度相差了上百倍,所以numpy数组显然更适合做数值运算。


一、ndarray数组对象

1、数组的初步认识

NumPy 最重要的一个特点是其 n 维数组对象 ndarray,它是一系列同类型数据的集合所组成数据结构,以 0 下标为开始进行集合中元素的索引。ndarray 数组中的元素用的最多是数值型元素,平时我们说的一维、二维、三维数组长下面这个样子 (对应着线、面、体)。
ndarray
axis,中文叫,一个数组是多少维度就有多少根轴。 Python 计数都是从 0 开始的,如下图:
ndarray

2、数组的创建

(1)由python中的列表和元组等数据类型创建

这种方法主要用到np.array()函数,参数里面是元组或者列表都可以:

a = np.array([[2,3,4,7,5],[4,8,5,7,2]])   
b = np.array(((1,2,5,3,7),(3,7,2,9,5)))
print("a=\n{}\n".format(a))
print("b=\n{}\n".format(b))
a=
[[2 3 4 7 5]
 [4 8 5 7 2]]

b=
[[1 2 5 3 7]
 [3 7 2 9 5]]

元组或列表混着来也可以:

c = np.array([(1,3,7,5,2),[2,7,4,9,6]])
print("c=\n{}\n".format(c))
c=
[[1 3 7 5 2]
 [2 7 4 9 6]]

(2)定隔定点创建

这种创建方式一共有两种函数:

  • np.arange():固定元素大小间隔
  • np.linspace():固定元素个数

np.arange()函数的定义如下:

numpy.arange(start, stop, step, dtype)

参数说明:

参数 说明
start 起始值,默认为0
stop 终止值(不能为空且不包括)
step 步长,默认为1
dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

下面是具体例子:

d1 = np.arange(5)
d2 = np.arange(2,5)
d3 = np.arange(2,8,2)
print("d1=\n{}\n".format(d1))
print("d2=\n{}\n".format(d2))
print("d3=\n{}\n".format(d3))
d1=
[0 1 2 3 4]

d2=
[2 3 4]

d3=
[2 4 6 8]

np.linspace()函数的定义如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

参数 说明
start 序列的起始值
stop 序列的终止值,如果endpoint为true,该值包含于数列中
num 要生成的等步长的样本数量,默认为50
endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True。
retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。
dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

下面是具体例子:

d4 = np.linspace(1,100,8)
d5 = np.linspace(1,100,8,endpoint=False)
print("d4=\n{}\n".format(d4))
print("d5=\n{}\n".format(d5))
d4=
[  1.          15.14285714  29.28571429  43.42857143  57.57142857  71.71428571  85.85714286 100.        ]

d5=
[ 1.    13.375 25.75  38.125 50.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值