或指定导入库的别名(在引入多个库的时候,推荐使用这个方法)。
import numpy as np
接着我们看下数组的一些属性:
# 查看行数
a.ndim
2
# 查看数组的维数,返回(n,m), 其中 n 为行数,m 为列数。
a.shape
(2, 3)
# 查看元素的类型,比如 numpy.int32、numpy.float64
a.dtype dtype('float64')
我们还可以使用 linspace 函数创建等差序列数组,其参数依次为:开始值、结束值、元素数量
。
np.linspace(0,2,9)
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
1.5 数组运算
a = np.array([1,2,3]) b = np.array([4.,5,6]) # 加法运算 a + b array([ 5., 7., 9.]) # 减法运算 a - b array([-3., -3., -3.]) # 乘法运算 a * b array([ 4., 10., 18.]) # 乘方运算:a的2次方 a ** 2 array([1, 4, 9]) # 除法运算 a/b array([ 0.25, 0.4 , 0.5 ]) # 数组点乘 np.dot(a,b) 32.0 # 判断大小,返回 bool 值 a >= 2 array([False, True, True], dtype=bool) # a中最大的元素 a.max() 3 # a中最小的元素 a.min() 1 # a的和 a.sum() 6
1.6 数组拷贝
数组的拷贝分为浅拷贝和深拷贝两种,浅拷贝通过数组变量的复制完成,深拷贝使用数组对象的copy方法完成。
浅拷贝只拷贝数组的引用,如果对拷贝对象修改。原数组也将修改。
下面的代码演示了浅拷贝的方法:
a = np.ones((2,3)) a array([[ 1., 1., 1.], [ 1., 1., 1.]]) # b 为 a 的浅拷贝 b = a b array([[ 1., 1., 1.], [ 1., 1., 1.]]) # 对 b 进行修改,a 也会被修改 b[1,2] = 9 a --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-a2b0891fb16b> in <module>() 1 # 对 b 进行修改,a 也会被修改 ----> 2b[1,2] = 9展开输出 ↓ 3 a NameError: name 'b' is not defined
深拷贝会复制一份和原数组一样的数组,但他们在内存中是分开存放的,所以改变拷贝数组,原数组不会改变。
下面的代码演示了 b 使用 copy 方法从原数组 a 复制一份拷贝的情况。
a = np.ones((2,3)) a array([[ 1., 1., 1.], [ 1., 1., 1.]]) b = a.copy() b[1,2] = 9 b array([[ 1., 1., 1.], [ 1., 1., 9.]]) a array([[ 1., 1., 1.], [ 1., 1., 1.]])