- Python科学计算(第2版)
- 张若愚
- 584字
- 2025-03-09 06:39:26
2.1.1 创建
首先需要创建数组才能对其进行运算和操作。可以通过给array()函数传递Python的序列对象来创建数组,如果传递的是多层嵌套的序列,将创建多维数组(下例中的变量c):
a = np.array([1, 2, 3, 4]) b = np.array((5, 6, 7, 8)) c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]]) b c ------------ ------------------ [5, 6, 7, 8] [[ 1, 2, 3, 4], [ 4, 5, 6, 7], [ 7, 8, 9, 10]]
数组的形状可以通过其shape属性获得,它是一个描述数组各个轴的长度的元组(tuple):
a.shape b.shape c.shape ------- ------- ------- (4,) (4,) (3, 4)
数组a的shape属性只有一个元素,因此它是一维数组。而数组c的shape属性有两个元素,因此它是二维数组,其中第0轴的长度为3,第1轴的长度为4。还可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度。下面的例子将数组c的shape属性改为(4,3),注意从(3,4)改为(4,3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素在内存中的位置并没有改变:
c.shape = 4, 3 c array([[ 1, 2, 3], [ 4, 4, 5], [ 6, 7, 7], [ 8, 9, 10]])
当设置某个轴的元素个数为-1时,将自动计算此轴的长度。由于数组c有12个元素,因此下面的程序将数组c的shape属性改成了(2,6):
c.shape = 2, -1 c array([[ 1, 2, 3, 4, 4, 5], [ 6, 7, 7, 8, 9, 10]])
使用数组的reshape()方法,可以创建指定形状的新数组,而原数组的形状保持不变:
d = a.reshape((2,2)) # 也可以用a.reshape(2,2) d a -------- ------------ [[1, 2], [1, 2, 3, 4] [3, 4]]
数组a和d其实共享数据存储空间,因此修改其中任意一个数组的元素都会同时修改另一个数组的内容。注意在下面的例子中,数组d中的2也被改成了100:
a[1] = 100 # 将数组a的第1个元素改为100 a d -------------------- ------------ [ 1, 100, 3, 4] [[ 1, 100], [ 3, 4]]