python-数据分析-(2)numpy初识

一、 numpy 矩阵

numpy(Numerical python)是python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
numpy : 计算模块; 主要有两种数据类型:数组、 矩阵

特点: 运算快

【】 + 【】

import numpy as np

1、numpy创建矩阵

mat1 = np.mat("1 2 3; 2 3 4; 1 2 3")
print(mat1)
print(type(mat1))
[[1 2 3]
 [2 3 4]
 [1 2 3]]
<class 'numpy.matrix'>
mat2 = np.mat("1 2;2 3;2 2")
print(mat2)
[[1 2]
 [2 3]
 [2 2]]
mat3 = np.mat("1 2 2; 2 2 4; 1 1 2")
print(mat3)
[[1 2 2]
 [2 2 4]
 [1 1 2]]
  1. 矩阵计算
print('矩阵加法运算:\n', mat1+mat3 )
矩阵加法运算:
 [[2 4 5]
 [4 5 8]
 [2 3 5]]
print('矩阵乘法:\n', mat1*mat2)
矩阵乘法:
 [[11 14]
 [16 21]
 [11 14]]
print('矩阵转置:\n', mat1.T)
矩阵转置:
 [[1 2 1]
 [2 3 2]
 [3 4 3]]
mat4 = np.mat("1 0 0; 0 4 0; 0 0 6")
print('逆矩阵:\n', mat4.I)
逆矩阵:
 [[1.         0.         0.        ]
 [0.         0.25       0.        ]
 [0.         0.         0.16666667]]
print('矩阵数乘:\n', 4 * mat4)
矩阵数乘:
 [[ 4  0  0]
 [ 0 16  0]
 [ 0  0 24]]
print('对应元素相乘的运算:\n', np.multiply(mat1, mat3))
对应元素相乘的运算:
 [[ 1  4  6]
 [ 4  6 16]
 [ 1  2  6]]

二、矩阵属性

print('矩阵的结构:\n', mat1.shape)
矩阵的结构:
 (3, 3)
print('矩阵的元素个数:\n', mat1.size)
矩阵的元素个数:
 9
print('矩阵元素类型:\n', mat1.dtype)
矩阵元素类型:
 int32
print('矩阵的维度:\n', mat1.ndim)
矩阵的维度:
 2

三、数组的创建

数组的所有运算都是对应元素的运算;

  1. 数组的创建
#一维的数组
arr1 = np.array([1, 2, 3, 4])
print(arr1)
print(type(arr1))
[1 2 3 4]
<class 'numpy.ndarray'>
#二维的数组:
arr2 = np.array([[1, 2, 3],[0, 1, 2],[2, 3, 1]])
print(arr2)
[[1 2 3]
 [0 1 2]
 [2 3 1]]
#列向量类型的数组:
arr3 = np.array([[1], [2],[3],[4]])
print(arr3)
[[1]
 [2]
 [3]
 [4]]
  1. 数组的属性
print('一维数组结构:\n', arr1.shape)
print('二维数组结构:\n', arr2.shape)
一维数组结构:
 (4,)
二维数组结构:
 (3, 3)
print('一维数组的元素个数:\n', arr1.size)
print('二维数组的元素个数:\n', arr2.size)
数组的元素个数:
 4
数组的元素个数:
 9
print('一维数组元素的类型:\n', arr1.dtype)
print('二维数组元素类型:\n', arr1.dtype)
元素的类型:
 int32
二维元素类型:
 int32
print('一维数组的维度:\n', arr1.ndim)
print('二维数组的维度:\n', arr2.ndim)
一维数组的维度:
 1
二维数组的维度:
 2

3.数组的索引

# (1)一维数组的索引:
arr1[::-1]
array([4, 3, 2, 1])
# (2)二维数组的切片
print(arr2)
# arr2[行切片, 列切片]
arr2[1, 2]
arr2[:2, 0:2]
[[1 2 3]
 [0 1 2]
 [2 3 1]]


array([[1, 2],
       [0, 1]])
# (3)不同行不同列的切片

arr2[(0,1,2),(0,1,2)]
array([1, 1, 1])
arr2[(1,0,1),(0,1,2)]
array([0, 2, 2])
arr2
array([[1, 2, 3],
       [0, 1, 2],
       [2, 3, 1]])
#(5)bool取值# : 不要行列同时传入bool值,只在行的位置或列的位置传入即可;
mask = np.array([1, 0, 1], dtype=np.bool )
print(mask)
[ True False  True]
arr2[mask, :2]
array([[1, 2],
       [2, 3]])
arr2[:2, mask]
array([[1, 3],
       [0, 2]])
arr2[mask, mask]
array([1, 1])
#练习
arr5 = np.array([1, 6, 3, 4, 5])
mask = np.array([0,1,0,1,1], dtype=np.bool)
arr5[mask]
array([6, 4, 5])
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值