NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是一个一维数组,而这个一维数组中每个元素又是一个一维数组。所以这个一维数组就是NumPy中的轴(axes),而轴的数量——秩,就是数组的维数。
1、创建矩阵
Numpy库中的矩阵模块为ndarray对象,有很多属性:T,data, dtype,flags,flat,imag,real,size,
itemsize,nbytes,ndim,shape,strides,ctypes,base等等。
1.1采用ndarray对象
import numpy as np #引入numpy库#创建一维的narray对象a = np.array([1,2,3,4,5])#创建二维的narray对象a2 = np.array([[1,2,3,4,5],[6,7,8,9,10]])#创建多维对象以其类推
1.2通过函数创建矩阵
1.2.1 arange
import numpy as npa = np.arange(10) # 默认从0开始到10(不包括10),步长为1print(a) # 返回 [0 1 2 3 4 5 6 7 8 9]a1 = np.arange(5,10) # 从5开始到10(不包括10),步长为1print(a1) # 返回 [5 6 7 8 9]a2 = np.arange(5,20,2) # 从5开始到20(不包括20),步长为2print(a2) # 返回 [ 5 7 9 11 13 15 17 19]
1.2.2 linspace
linspace()和matlab的linspace很类似,用于创建指定数量等间隔的序列,实际生成一个等差数列。
import numpy as npa = np.linspace(0,10,5) # 生成首位是0,末位是10,含5个数的等差数列print(a)
1.2.3 logspace
linspace用于生成等差数列,而logspace用于生成等比数列。
下面的例子用于生成首位是100,末位是102,含5个数的等比数列
import numpy as npa = np.logspace(0,2,5)print(a)
1.2.4 ones,zeros,eye,empty
ones创建全1矩阵
zeros创建全0矩阵
eye创建单位矩阵
empty创建空矩阵(实际有值)
import numpy as npa_ones = np.ones((3,4)) # 创建3*4的全1矩阵print(a_ones)# 结果[[ 1. 1. 1. 1.] [ 1. 1. 1. 1.] [ 1. 1. 1. 1.]]a_zeros = np.zeros((3,4)) # 创建3*4的全0矩阵print(a_zeros)# 结果[[ 0. 0. 0. 0.][ 0. 0. 0. 0.][ 0. 0. 0. 0.]]a_eye = np.eye(3) # 创建3阶单位矩阵print(a_eye)# 结果[ 1. 0. 0.][ 0. 1. 0.][ 0. 0. 1.]]a_empty = np.empty((3,4)) # 创建3*4的空矩阵 print(a_empty)# 结果[[ 1.78006111e-306 -3.13259416e-294 4.71524461e-309 1.94927842e+289][ 2.10230387e-309 5.42870216e+294 6.73606381e-310 3.82265219e-297][ 6.24242356e-309 1.07034394e-296 2.12687797e+183 6.88703165e-315]]
1.2.5 fromstring
fromstring()方法可以将字符串转化成ndarray对象,需要将字符串数字化时这个方法比较有用,可以获得字符串的ascii码序列。
a = "abcdef"b = np.fromstring(a,dtype=np.int8) # 因为一个字符为8位,所以指定dtype为np.int8print(b) # 返回 [ 97 98 99 100 101 102]
新闻热点
疑难解答