原标题:Python知识普及:Numpy基础操作

Numpy基础数据结构

创建数组

Numpy通用函数

import numpy as np

# reshape 改变数组维度形状

ar1 = np.arange(10)

print(ar1)

print("")

print(ar1.reshape(5, 2)) # 方式1

print("")

ar1 = np.ones((2, 5))

print(ar1)

print("")

ar1 = np.ones((2, 5)).reshape(5, 2) # 方式2

print(ar1)

print("")

ar1 = np.reshape(np.arange(9), (3,3)) # 方式3

print(ar1)

[0 1 2 3 4 5 6 7 8 9]

[[0 1]

[2 3]

[4 5]

[6 7]

[8 9]]

[[ 1. 1. 1. 1. 1.]

[ 1. 1. 1. 1. 1.]]

[[ 1. 1.]

[ 1. 1.]

[ 1. 1.]

[ 1. 1.]

[ 1. 1.]]

[[0 1 2]

[3 4 5]

[6 7 8]]

# T 数组转置

ar2 = np.zeros((2, 5))

print(ar2)

print("")

print(ar2.T)

[[ 0. 0. 0. 0. 0.]

[ 0. 0. 0. 0. 0.]]

[[ 0. 0.]

[ 0. 0.]

[ 0. 0.]

[ 0. 0.]

[ 0. 0.]]

# resize跟reshape类似 区别是当改变数组维度时不会因数据量的不同而报错

ar3 = np.reshape(np.arange(15), (3, 5))

print(ar3)

print("")

ar4 = np.resize(ar3, (5, 3))

print(ar4)

print("")

ar5 = np.resize(ar3, (3, 4)) # 当改变后的数组需要的数据量比原数组的数据量少时 会依次排序 多余的数值不会显示

print(ar5)

print("")

ar6 = np.resize(ar3, (4, 5)) # 当改变后的数组需要的数据量比原数组的数据量多时 不足的会补充排序

print(ar6)

[[ 0 1 2 3 4]

[ 5 6 7 8 9]

[10 11 12 13 14]]

[[ 0 1 2]

[ 3 4 5]

[ 6 7 8]

[ 9 10 11]

[12 13 14]]

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

[[ 0 1 2 3 4]

[ 5 6 7 8 9]

[10 11 12 13 14]

[ 0 1 2 3 4]]

# np.resize(a, shape) 有返回值 不会改变原数组

ar7 = np.arange(10)

print(ar7)

print("")

ar8 = np.resize(ar7, (2, 5))

print(ar8)

print("")

print(ar7)

[0 1 2 3 4 5 6 7 8 9]

[[0 1 2 3 4]

[5 6 7 8 9]]

[0 1 2 3 4 5 6 7 8 9]

# a.resize(shape) 没有返回值 直接改变原数组

ar7 = np.arange(10)

print(ar7)

print("")

ar8 = ar7.resize(2, 5) # 注意ar8为None 因为是改变原数组 所以没有返回值

print(ar8)

print("")

print(ar7)

[0 1 2 3 4 5 6 7 8 9]

None

[[0 1 2 3 4]

[5 6 7 8 9]]

# 数据类型转换 astype

ar9 = np.arange(10, dtype=np.float64)

print(ar9)

print(ar9.dtype) # 查看数值类型

print("")

ar10 = ar9.astype(np.int64) # 改变数值类型

print(ar10)

print(ar10.dtype)

[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

float64

[0 1 2 3 4 5 6 7 8 9]

int64

# 数组堆叠

# hstack vstack

a = np.arange(10)

print(a)

print("")

b= np.arange(10, 20)

print(b)

print("")

c = np.hstack((a, b)) # hstack表示横向连接

print(c)

print("")

d = np.vstack((a, b)) # vstack表示纵向连接

print(d)

print("")

[0 1 2 3 4 5 6 7 8 9]

[10 11 12 13 14 15 16 17 18 19]

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]

[[ 0 1 2 3 4 5 6 7 8 9]

[10 11 12 13 14 15 16 17 18 19]]

[[ 0 1 2 3 4 5 6 7 8 9]

[10 11 12 13 14 15 16 17 18 19]]

# stack

print(a)

print("")

print(b)

print("")

e = np.stack((a, b), axis=0) # axis=0 横向看(纵向连接)

print(e)

print("")

e = np.stack((a, b), axis=1) # 纵向看(横向连接)

print(e)

[0 1 2 3 4 5 6 7 8 9]

[10 11 12 13 14 15 16 17 18 19]

[[ 0 1 2 3 4 5 6 7 8 9]

[10 11 12 13 14 15 16 17 18 19]]

[[ 0 10]

[ 1 11]

[ 2 12]

[ 3 13]

[ 4 14]

[ 5 15]

[ 6 16]

[ 7 17]

[ 8 18]

[ 9 19]]

# 数组拆分

a = np.arange(16).reshape(4, 4)

print(a)

print("")

b = np.hsplit(a, 2) # 按列来切割

print(b)

print("")

c = np.vsplit(a, 2) # 按行来切割

print(c)

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]]

[array([[ 0, 1],

[ 4, 5],

[ 8, 9],

[12, 13]]), array([[ 2, 3],

[ 6, 7],

[10, 11],

[14, 15]])]

[array([[0, 1, 2, 3],

[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],

[12, 13, 14, 15]])]

# 求和 sum

a = np.arange(10).reshape(2, 5)

print(a)

print("")

print(np.sum(a, axis=0)) # 0代表横轴

print("")

print(np.sum(a, axis=1)) # 1代表纵轴

[[0 1 2 3 4]

[5 6 7 8 9]]

[ 5 7 9 11 13]

[10 35]

# 排序 sort

print(np.sort(np.array([3, 5, 5, 3, 1, 4])))

[1 3 3 4 5 5]

Numpy基本索引和切片

import numpy as np

# 一维数组

arr = np.array(range(10))

print(arr)

print("")

print(arr[4])

print(arr[:3])

print(arr[::2])

[0 1 2 3 4 5 6 7 8 9]

4

[0 1 2]

[0 2 4 6 8]

# 二维数组

arr = np.arange(20).reshape(4, 5)

print(arr)

print("")

print(arr[2]) # 取出某一行

print("")

print(arr[2][2]) # 取出某一个数

print("")

print(arr[1:3]) # 取出多行

print("")

print(arr[2, 2]) # 逗号前代表行 逗号后代表列

print("")

print(arr[:2, 1:3]) # 取出多行多列

[[ 0 1 2 3 4]

[ 5 6 7 8 9]

[10 11 12 13 14]

[15 16 17 18 19]]

[10 11 12 13 14]

12

[[ 5 6 7 8 9]

[10 11 12 13 14]]

12

[[1 2]

[6 7]]

# 三维数组

arr = np.arange(48).reshape(3,4,4) # 3个4行4列的数组

print(arr)

print("*"*30)

print(arr[2])

print("*"*30)

print(arr[2][1])

print("*"*30)

print(arr[2][1][1])

[[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]]

[[16 17 18 19]

[20 21 22 23]

[24 25 26 27]

[28 29 30 31]]

[[32 33 34 35]

[36 37 38 39]

[40 41 42 43]

[44 45 46 47]]]

[[32 33 34 35]

[36 37 38 39]

[40 41 42 43]

[44 45 46 47]]

[36 37 38 39]

37

Numpy布尔型索引及切片

# 用布尔型索引去做筛选

arr = np.arange(12).reshape(3, 4)

print(arr)

print("")

a = np.array([True, False, True])

print(a)

print("")

b = np.array([True, False, False, True])

print(b)

print("")

print(arr[a, :])

print("")

print(arr[:, b])

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

[ True False True]

[ True False False True]

[[ 0 1 2 3]

[ 8 9 10 11]]

[[ 0 3]

[ 4 7]

[ 8 11]]

# 用布尔型矩阵去做筛选

print(arr)

print("")

m = arr>5

print(m)

print("")

n = arr[arr>5]

print(n)

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

[[False False False False]

[False False True True]

[ True True True True]]

[ 6 7 8 9 10 11]

Numpy随机数生成

import numpy as np

# random.normal 正态分布随机数

print(np.random.normal(size=(4, 4))) # 生成一个4行4列的正态分布随机数

[[ 1.01645652 -0.30952914 -0.40576099 -0.94259139]

[-0.16483869 0.42278586 0.8260384 -0.88469832]

[ 1.31487466 -0.86188981 -0.71485117 -2.12449215]

[-1.80353888 -0.93264659 -1.1424078 0.31905742]]

# random.rand 平均分布 随机生成 [0-1) 之间的数

a = np.random.rand() # 生成一个数

print(a)

print("")

b = np.random.rand(4) # 生成4个数

print(b)

print("")

c = np.random.rand(2,4) # 生成二维数组

print(c)

0.11426452609434679

[ 0.79633633 0.32467913 0.28038512 0.56304155]

[[ 0.06561635 0.40454132 0.58158716 0.73527881]

[ 0.59301023 0.74935326 0.24347665 0.59653582]]

# np.random.randint 在自定义的范围内随机生成整数

a = np.random.randint(3) # 在 [0-3)的范围内随机生成一个整数

print(a)

print("")

b = np.random.randint(2, 10) # [2-10)的范围内随机生成一个整数

print(b)

print("")

c = np.random.randint(20, size=10) # 生成一个 [0-20) 之间 有10个整数元素的一维数组

print(c)

print("")

d = np.random.randint(20, 40, size=10) # 生成一个 [20-40) 之间 有10个整数元素的一维数组

print(d)

print("")

e = np.random.randint(40, 50, size=(2, 5)) # 生成一个 [40-50) 之间 有2行5列元素的二维数组

print(e)

0

6

[ 9 11 5 12 19 4 19 1 7 10]

[24 20 34 38 37 24 26 35 35 30]

[[49 42 42 44 49]

[44 44 40 49 45]]返回搜狐,查看更多

责任编辑:

python之numpy基础_Python知识普及:Numpy基础操作相关推荐

  1. 你需要知道的基础算法知识——STL和基础数据结构(六)

    引言 STL是C++的标准模板库,竞赛中很多常用的数据结构.算法在STL中都有,熟练地掌握它们在很多题目中能极大地简化编程. STL包括容器(container).迭代器(iterator).空间配置 ...

  2. 你需要知道的基础算法知识——STL和基础数据结构(七)

    引言 STL是C++的标准模板库,竞赛中很多常用的数据结构.算法在STL中都有,熟练地掌握它们在很多题目中能极大地简化编程. STL包括容器(container).迭代器(iterator).空间配置 ...

  3. 你需要知道的基础算法知识——STL和基础数据结构(五)

    引言 STL是C++的标准模板库,竞赛中很多常用的数据结构.算法在STL中都有,熟练地掌握它们在很多题目中能极大地简化编程. STL包括容器(container).迭代器(iterator).空间配置 ...

  4. 你需要知道的基础算法知识——STL和基础数据结构(四)

    引言 STL是C++的标准模板库,竞赛中很多常用的数据结构.算法在STL中都有,熟练地掌握它们在很多题目中能极大地简化编程. STL包括容器(container).迭代器(iterator).空间配置 ...

  5. 你需要知道的基础算法知识——STL和基础数据结构(二)

    引言 STL是C++的标准模板库,竞赛中很多常用的数据结构.算法在STL中都有,熟练地掌握它们在很多题目中能极大地简化编程. STL包括容器(container).迭代器(iterator).空间配置 ...

  6. 你需要知道的基础算法知识——STL和基础数据结构(一)

    引言 STL是C++的标准模板库,竞赛中很多常用的数据结构.算法在STL中都有,熟练地掌握它们在很多题目中能极大地简化编程. STL包括容器(container).迭代器(iterator).空间配置 ...

  7. python中导入numpy库_python中的Numpy库

    导入numpy库: import numpy as np python的一个科学计算库的一个基础包,包含了强大的N维数组对象和向量运算 数组创建,可以使用array函数从常规的python列表和或元组 ...

  8. 为什么python安装不了numpy库_python 安装与numpy matplotlib 等库安装

    1.下载并安装Python3.4 在官网下载即可:Python官网 2.安装pip (1)查看是否已安装pip 进入cmd命令窗口,输入pip --version ,查看是否已安装pip,如果出现下图 ...

  9. numpy安装_Python进阶之NumPy快速入门(一)

    前言 NumPy是Python的一个扩展库,负责数组和矩阵运行.相较于传统Python,NumPy运行效率高,速度快,是利用Python处理数据必不可少的工具. 这个NumPy快速入门系列分为四篇,包 ...

最新文章

  1. 骑摩托的蒙娜丽莎 - 曼妙风骚的花式慢跑算法
  2. Lucky Substrings
  3. ClassLoader工作机制
  4. element-ui 使用table控件绑定的list数据的坑
  5. OpenCV_01 简介+无版权安装+模块分析
  6. mybatis resultMap type属性问题 ( xx.xx.PO cannot be cast to xx.xx.BO)
  7. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的微信小程序点餐系统
  8. During a meeting, there was a woman
  9. es文件浏览器怎么用_python爬虫入门:什么是爬虫,怎么玩爬虫?
  10. 大数据笔记(二十一)——NoSQL数据库之Redis
  11. 2021百强县市名单
  12. c traps and pitfalls reading notes(2)
  13. python画图如何调整图例位置_python中图例的位置怎么手动调整
  14. oracle的单引号和双引号的深入举例分析
  15. HATEOAS(Hypermedia as the engine of appliation state)是什么?
  16. ora-01652无法通过128(在表空间temp中)扩展temp段
  17. html5理财计算,理财产品的收益怎么算(个人理财收益计算器)
  18. PWmat案例赏析:计算精度高、速度快的第一性原理计算,研究表面终端结构对NV色心影响
  19. 【Flink实战系列】Lorg/apache/flink/kafka/shaded/org/apache/kafka/clients/consumer/ConsumerRecord;)Ljava/
  20. python怎么批量爬取图片_python批量爬取网络图片

热门文章

  1. 3.2 神经网络表示-深度学习-Stanford吴恩达教授
  2. arduino上ESP8266用Adafruit_SSD1306库驱动OLED屏
  3. 张学友演唱会成犯罪分子噩梦,阿里云云盾人发布脸对比功能将进一步提升罪犯监察力度...
  4. 通过容器编排和服务网格来改进Java微服务的可测性
  5. php解释命令行的参数
  6. 记:PyInstaller打包一个最简单的kivy应用
  7. Eclipse调试Bug的七种常用技巧(转)
  8. JVM的垃圾回收与内存分配
  9. 人质困境:多个人的囚徒困境(博弈论的诡计)
  10. 配置策略路由(PBR)