文章目录

  • 一、numpy
    • 1.numpy作用
    • 2.numpy$pandas安装
    • 3.numpy属性
    • 4.numpy创建array
    • 5.numpy的基础运算
    • 6.numpy索引
    • 7.numpy array合并
    • 8.numpy 的array分割
    • 9.numpy的copy&decopy

一、numpy

1.numpy作用

相比于python中的字典、列表等计算快,并且使用C语言编写的,涉及矩阵的计算

2.numpy$pandas安装

在使用anaconda和pycharm时,将 Anconda 的解释器添加进 Pycharm 中,此时,即可直接导入numpy包、pandas包

3.numpy属性

# 导入模块
import numpy as np
# 把一个列表转换成矩阵(数组),array(数组)
array = np.array([[1,2,3],[2,3,4]])print(array)
'''[[1 2 3][2 3 4]]'''
# 几维
print('number of dim:',array.ndim)    # number of dim: 2
# 行数和列数
print('shape:',array.shape)           # shape: (2, 3)  2行3列
# 总共有多少元素
print('size:',array.size)             # size: 6

4.numpy创建array

import numpy as np
a = np.array([2,23,4])
print(a)                #[ 2 23  4]
# 每一个array可以定义type
# 整型
a = np.array([2,23,4],dtype=np.int)
print(a.dtype)          # int32
a = np.array([2,23,4],dtype=np.int64)
print(a.dtype)          # int64# 浮点型
a = np.array([2,23,4],dtype = np.float)
print(a.dtype)          # float64
a = np.array([2,23,4],dtype = np.float32)
print(a.dtype)          # float32# 生成矩阵
array = np.array([ [1,2,3],[2,3,4] ])
print(array)
'''[[1 2 3][2 3 4]]'''
# 生成全部为0的矩阵 (3,4)代表3行4列
a = np.zeros((3,4))
print(a)# 生成全部为1的矩阵
a= np.ones((3,4),dtype=np.int32)
print(a)# 生成全部为0的矩阵
a = np.empty((3,4))
print(a)# 生成一个有序的数列或矩阵,跟python中的range一样 包头不包尾
a = np.arange(10,20,2)
print(a)                     # [10 12 14 16 18]# 重新定义行和列
a = np.arange(12).reshape((3,4))
print(a)# 生成多少段从什么到什么的数列
a = np.linspace(1,10,5)        # 生成5段从1到10的数列
print(a)                        # [ 1.    3.25  5.5   7.75 10.  ]# linspace 和 reshape综合使用
a= np.linspace(1,10,6).reshape((2,3))
print(a)

5.numpy的基础运算

import numpy as np
a = np.array([10,20,30,40])
b = np.arange(4)
print(a,b)
# 减法
c = a-b
print(c)        # [10 19 28 37]
# 加法
d = a+b
print(d)        # [10 21 32 43]
# 平方
e = b**2
print(e)        # [0 1 4 9]
# 乘法
f = a*b
print(f)        # [  0  20  60 120]
# 除法
g = b/a
print(g)        # [0.         0.05       0.06666667 0.075     ]
# sin
h = 10*np.sin(a)
print(h)        # [-5.44021111  9.12945251 -9.88031624  7.4511316 ]
# cos 、tan与sin同理# 判断 a、b里面的元素大于、小于、等于某些数
print(a > 20)       # [False False  True  True]
print(b < 2)        # [ True  True False False]import numpy as np
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))
print(a)
print(b)# 逐个相乘
c = a*b
print(c)
# [[0 1]
#  [0 3]]
# 矩阵的乘法
c_dot = np.dot(a,b)
# c_dot = a.dot(b)
print(c_dot)
# [[2 4]
#  [2 3]]# 随机产生0-1之间的数字,需要给的参数是矩阵的行与列
d = np.random.random((2,3))
print(d)
# [[0.00438873 0.61744845 0.46120597]
#  [0.94061284 0.88433724 0.59690626]]print(np.sum(d))        # 和3.504899492845882
print(np.max(d))        # 最大值 0.9406128391409265
print(np.min(d))        # 最小值 0.00438872886596442# 定义在行或列  axis=1行  axis=0列
print(np.sum(d,axis=1))          # [1.08304315 2.42185634]
print(np.max(d,axis=1))          # [0.61744845 0.94061284]
print(np.min(d,axis=1))          # [0.00438873 0.59690626]
import numpy as np
A = np.arange(2,14).reshape((3,4))
print(A)
# [[ 2  3  4  5]
# #  [ 6  7  8  9]
# #  [10 11 12 13]]# 最小值的索引
print(np.argmin(A))         # 0
# 最大值的索引
print(np.argmax(A))         # 11
# 平均值
print(np.mean(A))           # 7.5
# print(A.mean())
print(np.average(A))        # 7.5# 求中位数
print(np.median(A))         # 7.5# 逐渐累加
print(A)
print(np.cumsum(A))
# [[ 2  3  4  5]
#  [ 6  7  8  9]
#  [10 11 12 13]]
# [ 2  5  9 14 20 27 35 44 54 65 77 90]# 累差
print(A)
print(np.diff(A))
# [[ 2  3  4  5]
#  [ 6  7  8  9]
#  [10 11 12 13]]
# [[1 1 1]        第一个1是A中3-2,依此类推
#  [1 1 1]
#  [1 1 1]]# 输出非零的数 nonzero
print(A)
print(np.nonzero(A))
# [[ 2  3  4  5]
#  [ 6  7  8  9]
#  [10 11 12 13]]
# (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
# 分别表示第0行第0列是非零的数,依次类推# 逐行排序
B = np.arange(14,2,-1).reshape((3,4))
print(B)
print(np.sort(B))
# [[14 13 12 11]
#  [10  9  8  7]
#  [ 6  5  4  3]]
# [[11 12 13 14]
#  [ 7  8  9 10]
#  [ 3  4  5  6]]# 矩阵的转置  行变成列 列变成行
print(np.transpose(B))
print(B.T)
# [[14 10  6]
#  [13  9  5]
#  [12  8  4]
#  [11  7  3]]# 矩阵的乘法(矩阵的转置与矩阵相乘)
print(B.T.dot(B))
# [[332 302 272 242]
#  [302 275 248 221]
#  [272 248 224 200]
#  [242 221 200 179]]# clip 截取功能 指定新生成的矩阵的最小值和最大值
print(np.clip(B,5,9))       # 将A中小于5的数变成5,大于9的数变成9
# [[9 9 9 9]
#  [9 9 8 7]
#  [6 5 5 5]]

6.numpy索引

import numpy as np
A = np.arange(3,15).reshape((3,4))
print(A)
# [[ 3  4  5  6]
#  [ 7  8  9 10]
#  [11 12 13 14]]# 索引
print(A[1][1])          # 8
print(A[2][1])          # 12
#  :代表所有数
print(A[2,:])           # 第二行的所有数[11 12 13 14]
print(A[:,1])           # 第一列的所有数[ 4  8 12]
print(A[1,1:2])         # 第一行第一列到第二列的所有数(包头不包尾)[8]# 迭代行
for row in A:print(row)
# [3 4 5 6]
# [ 7  8  9 10]
# [11 12 13 14]# 利用转置,迭代列
for column in A.T:print(column)
# [ 3  7 11]
# [ 4  8 12]
# [ 5  9 13]
# [ 6 10 14]# 迭代项目---将A转变成只有一行的项目 A.flat
print(A.flat)           # A.flat返回一个迭代器对象<numpy.flatiter object at 0x00000173B35E6E10>
print(A.flatten())      # A.flatten返回一维数组的函数
for item in A.flat:print(item)

7.numpy array合并

import numpy as np
A = np.array([1,1,1])
B = np.array([2,2,2])# 上下合并,参数为tup
C = np.vstack((A,B))
print(C)
# [[1 1 1]
#  [2 2 2]]
print(A.shape,C.shape)          # (3,) (2, 3)# 左右合并
D = np.hstack((A,B))
print(D)
# [1 1 1 2 2 2]
print(A.shape,D.shape)          # (3,) (6,)# 功能:np.newaxis是用来给数组a增加维度的
# 格式:a[np.newaxis和:的组合],如a[:,np.newaxis],a[np.newaxis, np.newaxis, :]
# 详解:np.newaxis在[]中第几位,a.shape的第几维就变成1,a的原来的维度依次往后排。# 把一个横向的数列变成竖向的数列
print(A[:,np.newaxis])
# [[1]
#  [1]
#  [1]]
print(A[:,np.newaxis].shape)            # (3, 1)print(A[np.newaxis,:])                  # [[1 1 1]]
print(A[np.newaxis,:].shape)            # (1, 3)A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
D = np.hstack((A,B))
print(D)
#[[1 2]
# [1 2]
# [1 2]]# 进行多个array的合并,axis参数来定义在哪个维度进行合并,axis=0列(纵向),axis=1行(横向)
C = np.concatenate((A,B,B,A),axis=1)
print(C)
# [[1 2 2 1]
#  [1 2 2 1]
#  [1 2 2 1]]

8.numpy 的array分割

import numpy as np
A = np.arange(12).reshape([3,4])
print(A)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]# 等量分割
# split 参数分别为ary,分割为多少层,哪个维度
print(np.split(A,2,axis=1))
# [array([[0, 1],
#        [4, 5],
#        [8, 9]]), array([[ 2,  3],
#        [ 6,  7],
#        [10, 11]])]print(np.split(A,3,axis=0))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]# 不等量的分割 array_split
print(np.array_split(A,3,axis=1))
# [array([[0, 1],
#        [4, 5],
#        [8, 9]]), array([[ 2],
#        [ 6],
#        [10]]), array([[ 3],
#        [ 7],
#        [11]])]# 纵向分割
print(np.vsplit(A,3))
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]# 横向分割
print(np.hsplit(A,2))
# [array([[0, 1],
#        [4, 5],
#        [8, 9]]), array([[ 2,  3],
#        [ 6,  7],
#        [10, 11]])]

9.numpy的copy&decopy

import numpy as np
A = np.array([1,2,3,4])
print(A)                # [1 2 3 4]# 赋值 两者相互关联
B = A
print(B)                # [1 2 3 4]
A[0] = 10
print(A)                # [10  2  3  4]
print(B)                # [10  2  3  4]# copy&deepcopy   值复制过来,但两者互不关联
C = A.copy()
A[0] = 20
print(A)                # [20  2  3  4]
print(C)                # [10  2  3  4]

数据科学包1---numpy相关推荐

  1. python第二阶段(2)入门-数据科学包 pandas

    数据科学包 pandas 导入pandas 创建对象 1 系列 2 日期序列(1) 3 日期序列(2) 4 Series的操作(1) 5 Series的操作(2) 合并,新增,连接和比较 1 连接 2 ...

  2. 机器学习---数据科学包-第2天

    1 pandas快速入门(一) .Series()方法.Series类型由一组数据及与之相关的数据索引组成. import pandas as pd import numpy as np s = pd ...

  3. 数据科学包——Day2

    数据科学包--Day2 利用Pandas, Numpy进行电影数据分析 准备工作 任务: 数据读取 数据合并 按性别查看各个电影的平均评分 男女评分差异最大的电影 活跃电影排行 前十大活跃电影--被评 ...

  4. 3.机器学习—数据科学包3.2pandas基础

    pandas基础 一.pandas介绍 1.什么是pandas 2.pandas用途 3.课程内容 二.Ipython开发环境搭建 1.安装 2.新建运行环境 3.Ipython技巧 4.Ipytho ...

  5. python 数据科学 包_什么时候应该使用哪个Python数据科学软件包?

    python 数据科学 包 Python is the most popular language for data science. Unfortunately, it can be tricky ...

  6. 常量数组 python_python数据科学系列:numpy入门详解教程

    python数据科学基础库主要是三剑客:numpy,pandas以及matplotlib,每个库都集成了大量的方法接口,配合使用功能强大.平时虽然一直在用,也看过很多教程,但纸上得来终觉浅,还是需要自 ...

  7. 看看这些鲜为人知的宝藏Python数据科学包吧!

    动态数据科学的这三剑客几乎无人不知无人不晓:Numpy,Pandas和Matplotlib.你可能已经熟悉这些包以及它们的运作方式. 还有其他很炫酷的包,你肯定也想试一试,例如Plotly,Seabo ...

  8. python数据科学系列:numpy入门详细教程

    导读 python数据科学基础库主要是三剑客:numpy,pandas以及matplotlib,每个库都集成了大量的方法接口,配合使用功能强大.平时虽然一直在用,也看过很多教程,但纸上得来终觉浅,还是 ...

  9. python数据科学包第二天

    文章目录 pandas入门 矩阵运算 重建索引 统计 数据合并 分组统计 数据整形 数据透视表 时间序列 类别数据 画图 数据读写 电影数据分析 准备工作 数据说明 利用 Pandas 分析电影评分数 ...

  10. python中画出距平垂线_3.机器学习—数据科学包3.3pandas操作

    pandas操作 一.pandas索引 1.Series索引index 2.DateFrame行索引index和列索引columns 3.pandas预置索引的类 4.重复索引 4.1重复索引定义 4 ...

最新文章

  1. Qt中的QMainWindow
  2. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
  3. LeetCode Algorithm 559. N 叉树的最大深度
  4. c++ primer 习题13.39自己做的答案
  5. crm 一级菜单排序,二级菜单选中并且展开,非菜单权限的归属,权限粒度控制到按钮级别...
  6. bba70_BBA的完整形式是什么?
  7. Emacs sql-mode 自动连接数据库 (当前仅支持MySQL)
  8. 官宣!DolphinScheduler 毕业成为 Apache 软件基金会顶级项目
  9. linux音频设备节点,Linux音频驱动之三:PCM设备的创建
  10. OV7670摄像头模块资料
  11. 大M法(Big M Method)
  12. 苹果软件测试的电池损耗准确,苹果官方维修如何查看苹果iPhone电池损耗和寿命...
  13. 使用telnet和ssh登录linux
  14. Google新一代操作系统Fuchsia详解
  15. OCSP在线证书状态协议内容描述
  16. matlab 绘制任意方向和位置的空间圆锥体
  17. pip命令卸载所有库
  18. WMS系统运用波次拣货原理
  19. JS 位数不够自动左补0
  20. 简单读!Mybatis源码(一)一条select的一生

热门文章

  1. Android 开机自启动
  2. mysql 中的 engine 存储引擎
  3. redis学习总结2
  4. Eclipse : Android requires compiler compliance level 5.0 or 6.0.
  5. php底层深度探索(3) ---Apache启动阶段分析 王泽宾
  6. FCKeditor在线编辑器的使用
  7. jQuery之美,第一次...
  8. React Native升级方法——升级到最新版本0.59
  9. Idea 里svn的导入使用
  10. 超大数据量操作 java程序优化[转载]