NumPy中最重要的一个特点就是其N维数组对象,即ndarray(别名array)对象,该对象可以执行一些科学计算。
创建最简单的nbarray对象的方法是array()函数,而在调用函数的时候需要传入一个列表或元组。
例如:*创建一维数组
data1 = np.array([1,2,3])
*创建一个二维数组
data2 = np.array([[1,2,3],[4,5,6]])
通过zeros()函数创建元素值都是0的数组;通过ones()函数创建元素值都为1的数组。
例如:* 创建元素值全是0的数组
np.zeros((3, 4))
* 创建元素值全是1的数组
np.ones((3, 4))
通过empty()函数创建一个新的数组,该数组只分配内存空间,而里面填充的元素都是随机的。
例如:*创建元素值全是随机数的数组
np.empty((5, 2))
通过arange()函数可以创建一个等差数组,它的功能类似于range(),只不过arange()函数返回的结果是数组,而不是列表。
ndarray.dtype可以创建一个表示数据类型的对象,如果获取数据类型的名称,则需要访问name属性进行获取。
如data_one = np.array([[1, 2, 3], [4, 5, 6]])
data_one.dtype.name
通过zeros()、ones()、empty()函数创建的数组,默认的数据类型为float64。默认情况下,64位windows系统输出的结果为int32, 64位Linux或macOS系统输出结果为int64,当然也可以通过dtype来指定数据类型的长度
ndarray对象的数据类型可以通过astype()方法进行转换。
例如:data = np.array([[1, 2, 3], [4, 5, 6]])
data.dtype
*数据类型转换为float64
float_data = data.astype(np.float64)
float_data.dtype
形状相等的数组之间的任何算术运算都会应用到元素级,即只用于位置相同的元素之间,所得的运算结果组成一个新的数组。
对于一维数组来说,从表面上来看,它使用索引和切片的方式,与Python列表的功能相差不大。
如:arr = np.arange(8)
* 获取索引为5的元素
arr[5]
* 获取索引为3~5的元素,但不包括5
arr[3:5]
在二维数组中,每个索引位置上的元素不再是一个标量了,而是一个一维数组。如果想获取二维数组的单个元素,则需要通过形如“arr[x,y]”的索引来实现,其中x表示行号,y表示列号。
NumPy的where()函数是三元表达式x if condition else y的矢量化版本。
如:arr_x = np.array([1, 5, 7])
arr_y = np.array([2, 6, 8])
arr_con = np.array([True, False, True])
result = np.where(arr_con, arr_x, arr_y)
如果希望对NumPy数组中的元素进行排序,可以通过sort()方法实现。
如:arr = np.array([[6, 2, 7],
[3, 6, 2],
[4, 3, 2]])
arr.sort()
all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False。any()函数用于判断整个数组中的元素至少有一个满足条件就返回True,否则就返回False。
与Python的random模块相比,NumPy的random模块功能更多,它增加了一些可以高效生成多种概率分布的样本值的函数。
如: 随机生成一个二维数组
np.random.rand(3, 3)
seed( )函数可以保证生成的随机数具有可预测性,也就是说产生的随机数相同。