Numpy库的简单使用
#导入将要用到的库
import numpy as np
创建数组
一般矩阵创建
# 1.利用列表创建一维数组
list = [1,2,3,4,5,6]
data1 = np.array(list)
# 2.利用列表创建二维数组
list = [[1,2,3],[4,5,6]]
data2 = np.array(list)
# 3.利用列表创建三维数组
list = [[[1,2,3],[4,5,6],[7,8,9]]]
data3 = np.array(list)
# 4.直接生成一维数组数据
data11 = np.random.randint(0,10,5)
# 5.直接生成二维数组数据
data21 = np.random.randint(0,10,(3,6))
# 6.直接生成三维数组数据
data31 = np.random.randint(0,10,(3,3,3))
data1,data2,data3,data11,data21,data31
(array([1, 2, 3, 4, 5, 6]),
array([[1, 2, 3],
[4, 5, 6]]),
array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]]),
array([0, 3, 8, 9, 6]),
array([[1, 6, 4, 5, 0, 8],
[4, 6, 3, 0, 0, 9],
[3, 3, 2, 6, 0, 7]]),
array([[[5, 3, 9],
[2, 4, 4],
[9, 7, 0]],
[[8, 5, 8],
[7, 2, 2],
[7, 3, 1]],
[[9, 8, 4],
[8, 0, 1],
[1, 9, 1]]]),
(6,))
特殊数组
#空数组
x1 = np.zeros(6) #创建一维0数组
x2 = np.zeros((2,3)) #创建二维0数组
x3 = np.zeros((3,3,3)) #创建三维0数组
#1数组
y1 = np.ones(6) #创建一维1数组
y2 = np.ones((2,3)) #创建二维1数组
y3 = np.ones((3,3,3)) #创建三维1数组
#未初始化数组
z1 = np.empty(6) #创建一维未初始化数组
z2 = np.empty((2,3)) #创建二维未初始化数组
z3 = np.empty((3,3,3)) #创建三维未初始化数组
array([[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]])
数组属性
#shape属性
print(data1.shape) #(6,):表示第一维度有6个元素,第二维度没有元素,即一维数组
print(data2.shape) #(2, 3):表示第一维度有两个元素,第二个维度有三个元素,即二维数组
print(data31.shape) #(3, 3, 3):表示一二三维度分别有三个元素,即三维数组
#ndim维度属性
print(data1.ndim) #1
print(data2.ndim) #2
print(data3.ndim) #3
#dtype元素类型属性
print(data31.dtype) #int32
(6,)
(2, 3)
(3, 3, 3)
1
2
3
int32
数组运算
一维数组运算
#定义两个数组
x = np.array([1,2,3,4])
y = np.array([7,8,9,10])
#四则运算
x + y #array([ 8, 10, 12, 14])
x - y #array([-6, -6, -6, -6])
x * y #array([ 7, 16, 27, 40])
y / x #array([7. , 4. , 3. , 2.5])
#特殊运算
y ** 2 #array([ 49, 64, 81, 100], dtype=int32)
y > 9 #array([False, False, False, True])
np.sin(y) #array([ 0.6569866 , 0.98935825, 0.41211849, -0.54402111])
np.exp(y) #e的x次方计算
np.dot(x,y) ##矩阵乘法:90
90
二维数组运算
#定义两个数组
x = np.array([[1,2],[3,4]])
y = np.array([[7,8],[9,10]])
#四则运算
x + y #array([[ 8, 10],[12, 14]])
x - y #array([[-6, -6],[-6, -6]])
x * y #array([[ 7, 16],[27, 40]])
y / x #array([[7. , 4. ],[3. , 2.5]])
np.dot(x,y) #矩阵乘法:array([[25, 28],[57, 64]])
array([[25, 28],
[57, 64]])
ndarray数组切片
一维数组切片
#定义一维数组
x = np.array([1,2,3,4,5,6,7,8,9])
x[2] #3
x[2:7] #array([3, 4, 5, 6, 7])
x[3:] #array([4, 5, 6, 7, 8, 9])
x[:3] #array([1, 2, 3])
x[0::2] #array([1, 3, 5, 7, 9])
x[[0, 1, 2]] #array([1, 2, 3])
x[[-1, -2, -3]] #array([9, 8, 7])
array([9, 8, 7])
二维数组切片
#定义二维数组
x = np.array([[1,2,7],[3,4,8],[5,6,9]])
x[1] #[3, 4, 5]
x[:2] #array([list([0, 1, 2]), list([3, 4, 5])], dtype=object)
x[2][1:] #[7, 8, 9]
x[:2,:1] #array([[1],[3]]) ****这样提取数据,必须元素个数相同
x[[0, 1]] #array([[1, 2, 7],[3, 4, 8]])
x[[0, 1], [0, 1]] #array([1, 4])
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
ndarray数组的一般函数
1.ndarray.reshape(x,y,z):重新构建数组结构
例:([1,2,3,4,5,6,7,8]).reshape(2,2,2) = [[[1, 2],[3, 4]],[[5, 6],[7, 8]]]
2.ndarray.T:矩阵转置
例:([[1,2],[3,4]]).T = ([1,3],[2,4])
3.np.where(condition,x,y):判断条件condition是否满足,满足取x、不满足取y
4.np.abs(x):取绝对值
5.np.sqrt(x):求平方根
6.np.square(x):求平方
7.np.add(x, y):数组加法
8.np.power(x, y):取第一个数组中的元素A,根据第二个数组中的元素B,计算AB
9.ndarry.sum(axis = *):根据行或者列进行求和
10.ndarry.mean(axis = *):根据行或者列进行求平均值