NumPy模块中一维数组和列表有相似之处,本文主要以列表与之作对比来讲解数组的概念。
1.数组创建
演示代码如下:
import numpy as np
a = [1, 2, 3, 4]
b = np.array([1, 2, 3, 4]) # 创建数组,array就是数组的意思
print(a)
print(b)
print(type(a))
print(type(b))
输出结果为:
[1, 2, 3, 4]
[1 2 3 4]
<class 'list'>
<class 'numpy.ndarray'> # 变量b的数据类型为数组
可以看到,在表现形式上,列表元素之间有逗号,而数组各元素之间是空格。
**2.**数组中的元素提取
数组中的单个元素提取和切片提取方法与列表是相同的,在上面打代码基础上执行如下代码:
print(a[1])
print(b[2])
print(a[0:2])
print(b[0:2])
输出结果为:
2
2
[1,2]
[1 2]
可以看到,不管是数组还是列表,在进行切片的时候都是遵循“左闭右开”的规则。
**3.**数组和列表的区别
(1)数组可以很好的支持数学运算,而列表在这方面则显得麻烦不方便。
演示代码如下:
import numpy as np
a = [1, 2, 3, 4]
b = np.array([1, 2, 3, 4])
c=a*2
d=b*2
print(c)
print(d)
运行结果如下:
[1, 2, 3, 4, 1, 2, 3, 4]
[2 4 6 8]
可以看到,同样是做乘法运算,列表是把元素复制了一遍,而数组则是对每个元素都进行了乘法运算。
(2)数组可以存储多维数据,而列表只能存储一维数据。演示代码如下:
import numpy as np
e = [[1, 2], [3, 4], [5, 6]]
f = np.array([[1, 2], [3, 4], [5, 6]])
print(e)
print(f)
运行结果如下:
[[1, 2], [3, 4], [5, 6]]
[[1 2]
[3 4]
[5 6]]
可以看到,列表e尽管进行了嵌套,但归根到底其结构仍然是一维的(每个元素列表仍为一维),而数组f则是3行2列的二维结构。
4.数组的创建方式
对于一维数组:
(1)np.array方式
演示代码如下:
import numpy as np
# 创建一维数组
a = np.array([1, 2, 3, 4])
# 创建二维数组
b = np.array([[1, 2], [3, 4], [5, 6]]) #这种方式也可以创建二维数组
(2)np.arange()方式
该函数的括号里可以输入1~3个参数,会得到不同的效果。演示代码如下:
import numpy as np
# 1个参数:起点取默认值0,参数值为终点,步长取默认值1,左闭右开
a = np.arange(5)
# 2个参数:第1个参数为起点,第2个参数为终点,步长取默认值1,左闭右开
b = np.arange(5, 10)
# 3个参数:第1个参数为起点,第2个参数为终点,第3个参数为步长,左闭右开
c= np.arange(5, 10, 2)
print(a)
print(b)
print(c)
运行结果如下:
[0 1 2 3 4]
[5 6 7 8 9]
[5 7 9]
(3)np.random方式
演示代码如下:
import numpy as np
c = np.random.randn(3)
print(c)
运行结果如下:
[ 0.74531674 -0.21140738 1.89103721] #包含服从正态分布的3个随机数
对于二维数组:
- 利用np.arange()函数和np.random函数结合reshape()函数即可创建
演示代码如下:
import numpy as np
a = np.arange(12).reshape(3, 4)
print(a)
运行结果如下:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
读者可以尝试一下np.arange()函数多个参数下的reshape()方法和np.random函数,以加深理解,这里不再过多展示了。
(2)随机整数创建方法
演示代码如下:
import numpy as np
a = np.random.randint(0, 10, (3, 3)) #创建随机整数数组,0为起始数,10 为终止数,(4,4)则表示创建一个3行3列的二维数组。
print(a)
运行结果如下:
[[6 7 9]
[1 4 4]
[6 9 8]]
好啦,今日份学习笔记就到这里了!有看不懂的小伙伴可以留言咨询哦!
版权归原作者 碧空长_海苍茫 所有, 如有侵权,请联系我们删除。