1.概述

1.np.array()  # 将列表转换为数组

import numpy as np

array = [1, 2, 3, 4, 5]
array = np.array(array)

2..shape  # 打印矩阵的维度, 也可以使用np.shape

import numpy as np

array = [1, 2, 3, 4, 5]
array = np.array(array)
print(array.shape)

2.array 结构

3.dtype 打印数组的数据类型

import numpy as np
tang_array = [1, 2, 3, 4]
tang_array = np.array(tang_array) print(tang_array.dtype)

4. .itemsize # 判断数组中每一个数字所占的字节数

print(tang_array.itemsize)

5. .size # 打印出数组中的元素个数, 不关心矩阵的维度

print(tang_array.size)

6. .ndim # 打印数组中的维度信息

print(tang_array.ndim)

7. .fill(0)  # 表示对当前数据进行填充,0表示填充的值

# .fill 对当前数据进行填充
tang_array = np.array([1, 2])
tang_array.fill(0)
print(tang_array)

8. numpy索引与切片

tang_array = np.array([1, 2, 3, 4])
print(tang_array[0])
print(tang_array[-2:])

9 .copy # 进行浅拷贝

tang_array2 = tang_array.copy()

10 .dtype设置数组类型 将列表转换为bool值根据bool值进行取值操作

tang_array = np.arange(0, 100, 10)
# 将列表转换为Bool值
bool_array = np.array([1, 0, 0, 1, 1, 1, 1, 0, 0, 0], dtype=bool)
# 根据bool值进行取值
print(tang_array[bool_array])

11.根据大于或者小于获得bool值根据bool值进行取值操作

tang_array = np.random.rand(10)
print(tang_array)
bool_array = tang_array > 0.5
print(bool_array)

12. np.where 对bool值进行操作,获得True的索引值

tang_array = np.random.rand(10)
bool_array = tang_array > 0.5
index = np.where(bool_array)
print(index)
print(tang_array[index])

13 .ndtype # 输出字节数

print(tang_array.nbytes)

14. .astype # 进行数据类型的转换,但是实际数据不发生改变

tang_array2 = tang_array.astype(np.float32)
print(tang_array2.dtype)

15. np.object格式,保存了数据的原来格式

array = np.array([1, 10, 3.5, 'str'], dtype=np.object)

3.数值计算

16. .sum(axis=0) # 进行数组的加和操作

import numpy as np

tang_array = np.array([[1, 2, 3],
[4, 5, 6]])
# 对axis=0,进行行与行进行加和
print(tang_array.sum(axis=0))
# 进行所有数据的加和
print(tang_array.min(axis=0))

print(tang_array.sum())
print(tang_array.sum(axis=-1))

17. .prod(axis=0) # 进行数组之间的乘积操作,axis=0表示行与行之间进行乘积

print(tang_array.prod())  # 所有元素进行相乘操作
print(tang_array.prod(axis=1))

18. .min(axis=0) 找出数组中数据最小的值,axis=0表示找出每一列的最小值,从上到下的操作

print(tang_array.min(axis=0))

19 .max(axis=0) # 找出数组中数据最大值的操作

print(tang_array.max(axis=0))

20  .argmax(axis=1) # 找出数组中每一行的最大值的位置

print(tang_array.argmax(axis=1))

21 .mean(axis=1)  # 找出数组中每一行均值的大小

print(tang_array.mean(axis=1))

22. std(axis=1) # 求出数组中每一行的标准差

print(tang_array.std(axis=1))

23. .var(axis=1) # 求出数组中每一行的方差

print(tang_array.var(axis=1))

24. .clip(2, 4)进行数据的范围限制, 小于2的用2表示,大于4的用4表示

print(tang_array.clip(2, 4))

25. .round(decimals=1) # 进行四舍五入,decimals表示保留小数点的后几位数

tang_array = np.array([1.12, 2.12, 3.12, 4.6])
print(tang_array.round(decimals=1))

4.排序

26. np.sort(value, axis=0)# 对数据进行排序操作

import numpy as np
tang_array = np.array([[1.5, 1.3, 7.5],
[5.6, 7.8, 1.2]])
# 对每一列进行排序
print(np.sort(tang_array, axis=0))

27.  .argsort(axis=0) # 打印排序后的索引位置

print(tang_array.argsort(axis=0))

28. np.linspace(0, 10, 11) # 进行范围的数据拆分

tang_array = np.linspace(0, 10, 11)

29. np.searchsorted(tang, value) # 将value插入tang_array 返回的是插入后的索引值

print(np.searchsorted(tang_array, value))

30. np.lexsort  # 指定列队数组进行排序操作

tang_array = np.array([[1, 0, 6],
[2, 7, 0],
[3, 3, 1],
[2, 4, 0]]) index = np.lexsort([tang_array[:, 2]])
print(tang_array[index])

5-数组形状

31. np.reshape(value, (2, 5)) # 进行矩阵的维度变化

tang_array = np.arange(10)
print(tang_array.shape)
# 通过.shape改变数据的维度
tang_array.shape = 2, 5
print(np.reshape(tang_array, (2, 5)))
print(tang_array)

32. np.newaxis # 表示增加一个矩阵维度

# 新增加一个维度 np.newaxis
tang_array = np.array([[1, 2],
[3, 4]])
tang_array = tang_array[:, :, np.newaxis]
print(tang_array.shape)

33 .squeeze(axis=3)  # 表示指定一个维度进行去除

print(tang_array.squeeze(axis=3).shape)

34 .transpose() 表示进行转置操作

tang_array = np.arange(0, 10, 1)
tang_array.shape = 2, 5
print(tang_array.transpose())

35. np.concatenate((a, b), axis=0)  # 进行矩阵的串接操作,(a, b)表示需要串接的tuple,axis=0进行上下的串接

a = np.array([[123, 456, 789], [3234, 456, 134]])
b = np.array([[123, 456, 789], [123, 546, 134]])
c = np.concatenate((a, b), axis=0)
print(c)

36. np.vstack((a, b)) # 进行矩阵的上下位置上的串接

c = np.vstack((a, b))
print(c)

37. np.hstack((a, b)) # 进行矩阵左右位置上的串接

c = np.hstack((a, b))
print(c)

38. .flatten() # 进行拉平操作,拉成一个维度

print(c.flatten())

39. .ravel()  # 进行拉平操作,也是拉成一个维度

print(c.ravel())

6-数组生成

40. np.arange(0, 10, 1)   # 0表示开始,10表示结束,1表示中间间隔

import numpy as np
# 根据np.arange进行数组1表示开始位置,10表示末位置, 2表示间隔
print(np.arange(1, 10, 2, dtype=np.float32))

41. np.linspace(0, 9, 10)  # 0表示起始位置,9表示结束,10表示拆分成10份

print(np.linspace(0, 9, 10))

42. np.logspace(0, 1, 11)  # 0表示起始位置, 1表示终止位置,11表示拆成11分,然后在输入

print(np.logspace(0, 1, 11))  #等价于10**0.1

43. np.meshgrid(x, y)   # 生成一个网格矩阵

x = np.linspace(0, 10, 11)
y = np.linspace(10, 20, 11)
x, y = np.meshgrid(x, y)
print(x)
print(y)

44. np.r_[0:10:1] 构造一个行向量

print(np.r_[0:10:1])

45. np.c_[0:10:1] # 构造一个列向量

print(np.c_[0:10:1])

46. np.zeros(3)

import numpy as np
# np.zeros 构造一个零矩阵
print(np.zeros(3))
print(np.zeros((2, 3)))

47. np.ones((3, 3))  # np.ones((3, 3))  表示3*3的维度

print(np.ones((3, 3)))

48. np.empty(size)  生成一个空矩阵

a = np.empty(6)
print(a)

49 np.zeros_like() 生成一个维度相同的零矩阵

tang_array = np.array([1, 2, 3, 4, 5])
tang_array2 = np.zeros_like(tang_array)
print(tang_array2)

50  np.ones_like() 生成一个维度相同的1矩阵

tang_array3 = np.ones_like(tang_array)
print(tang_array3)

51 np.identity(5)  # 生成一个形状是5的单位矩阵

print(np.identity(5))

7-运算

52. np.multiply(x, y) #将x和y进行对应位置相乘操作

import numpy as np 

x = np.array([5, 5])
y = np.array([2, 2])
# np.multiply(x, y) 将x和y进行对应位置相乘操作
print(np.multiply(x, y))

53. np.dot(x, y) #将x和y进行点乘操作,即矩阵运算(2, 1) * (1, 2) = (2, 2)

print(np.dot(x.reshape(2, 1), y.reshape(1, 2)))

54 # ndarray会进行数据的自动补全操作

x = np.array([1, 1, 1])
y = np.array([[1, 2, 3], [3, 4, 5]])
print(x + y)

55 np.logical_and # 如果两个都是真的就是真

x = np.array([1, 0, 1])
y = np.array([1, 1, 0])
print(x==y)
print(np.logical_and(x, y))

56. np.logical_or # 如果两个中有一个为真就是真

print(np.logical_or(x, y))

57. np.logical_not # 如果第二个数为1就是1,否者两个数都为0,等于1

print(np.logical_not(x, y))

8-随机矩阵

58. np.random.rand(3, 2)  # 构造一个(3, 2)的随机矩阵

import numpy as np
# 构造一个0,1之间的随机矩阵
print(np.random.rand(3, 2))

59. np.random.randint(0, 3, size=(2, 5))  # 构造一个0到2的随机整数矩阵,矩阵的维度是2,5

print(np.random.randint(0, 3, size=(5, 4)))

60 np.random.sample() # 返回一个0到1的随机数

print(np.random.sample())

61. np,random.uniform(0, 3, size=(2, 5)) # 从一个均匀的分布中随机取值

print(np.random.uniform(0, 1, size=(1, 1)))

62. np.random.normal(mu, sigma, size)  # 根据均值和标准差进行随机生成高斯矩阵

m = 0
sigma = 0.1 #标准差
print(np.random.normal(m, sigma, size=(10, 1)))

63. np.set_printoptions(precision=3) # 进行输出的精度设置,3表示的小数点的个数

np.set_printoptions(precision=3)
mu, sigma = 0, 0.1
n = np.random.normal(mu, sigma, 10)
print(n)

64 np.random.shuffle()  #对样本进行洗牌操作

tang_array = np.arange(0, 10, 1)
np.random.shuffle(tang_array)
print(tang_array)

65 np.random.seed(100)  # 设置随机种子,让每次随机获的参数的结果相同,为了更好的进行对比

np.random.seed(100)

x = np.random.normal(0, 0.1, size=(1, 10))
print(x)

9-读写

66. np.loadtxt('tang.txt', delimiter=",", skiprows=1), delimiter 表示分割符, skiprows表示去除第一行, usecols指定使用那几列数据

y = np.loadtxt('tang.txt', delimiter=',', skiprows=1)
print(y)

67. np.savetxt('tang2.txt', tang_array, fmt='%.2f', delimiter=',')

tang_array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
np.savetxt('tang2.txt', tang_array, fmt='%.2f', delimiter=',')

68. 进行单个array参数的载入和读取,保存的格式是npy

tang_array = np.array([1, 2, 3, 4], dtype=np.float32)

np.save('tang3.npy', tang_array)  # 写入文件

tang_array = np.load('tang3.npy')  # 读取文件
print(tang_array)

69. 进行多个array参数的载入和读取,使用的是np.savez,保存的格式是.npz,读取时使用key

tang_array = np.array([1, 2, 3, 4], dtype=np.float32)
tang_array2 = np.array([4, 5, 6, 7], dtype=np.float32) np.savez('tang.npz', a=tang_array, b=tang_array2) data = np.load('tang.npz')
print(data['a'])
print(data['b'])

练习题-1

70. np.__version__  # 打印numpy当前的版本

import numpy as np
print(np.__version__)

71 # 构造一个全零矩阵,并打印其所占内存数

z = np.zeros((5, 5))
print(z.size * z.itemsize)
print(z.nbytes)

72 # 打印一个函数的帮助文档 help(np.info(np,add))

print(help(np.info(np.add)))

73. # 创建一个10-49的数组,并将其倒序排列

tang_array = np.arange(10, 50, 1)
tang = tang_array[::-1]
print(tang)

74  np.nonzero(tang_array) # 找出一个数组中不为0的索引值

print(np.nonzero([1, 2, 3, 4, 5, 0, 0, 3]))

75 # 随机构造一个3*3矩阵, 打印其最大值和最小值

np.random.seed(9)
tang_array = np.random.randint(0, 10, size=(5, 6))
print(tang_array.min())
print(tang_array.max())

76 np.pad(tang_array, add_size, 'constant', constant_values=0) 构造一个5*5的矩阵,令其值为1,在最外层加上一圈0

tang_array = np.ones((5, 5))
tang_array2 = np.pad(tang_array, 1, 'constant', constant_values=0)
print(tang_array2)

77.  np.unravel_index(100, (6, 7, 8))   # 构建一个shape为(6, 7, 8)的矩阵,并找出第100个元素的索引值

print(np.unravel_index(100, (6, 7, 8)))

78. # 对一个5*5矩阵做0到1归一化操作

tang_array = np.random.random((5, 5))
tang_array = (tang_array - tang_array.min()) / (tang_array.max() - tang_array.min())

79. np.intersect1d(z1, z2)  # 找出两个数组相同的数

 np.random.randint(0, 11, 10)
z2 = np.random.randint(0, 11, 10)
print(np.intersect1d(z1, z2))

80. np.datetime64('today', 'D')  np.timedelta64(1, 'D') # 得到昨天今天明天

yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print(yesterday)

81. 得到一个月中所有的天数

print(np.arange('2017-10', '2017-11', dtype='datetime64[D]'))

82. np.floor(value) # 取出一个数的整数部分

tang_array = np.random.uniform(0, 10, 10)
print(np.floor(tang_array))

83 z.flags.writeable # 使得这个数组不能被改变

z = np.zeros(5)
z.flags.writeable = False
z[0] = 1

84. np.set_printoptin(threshold=np.nan)  # 使得数组全部打印出来

np.set_printoptions(threshold=np.nan)
z = np.zeros((5, 5))
print(z)

85.# 在一个数组中,找出最接近一个数的索引

z = np.arange(100)
v = np.random.uniform(0, 100)
print(v)
index = np.abs(z - v).argmin()
print(index)

86 # 进行float32与int32的类型转换

z = np.arange(10, dtype=np.float32)
l = z.astype(np.int32)
print(l.dtype)

87. # 打印数组的元素坐标与值

z = np.arange(9).reshape(3, 3)
for index, value in np.ndenumerate(z):
print(index, value)

88. 按照数组的某一列进行排序

z = np.random.randint(0, 10, (4, 3))
print(z[z[:, 1].argsort()])

89. np.bincount(tang_array) # 统计数组中元素的个数

z = np.array([1, 1, 1, 2, 2, 3, 4, 5])
print(np.bincount(z))

90. 对最后两个维度进行加和操作

tang_array = np.random.randint(0, 10, (4, 4, 4, 4))
print(tang_array.sum(axis=(-2, -1)))

91 # 交换矩阵的两行

tang_array = np.random.randint(0, 10, (3, 4))
tang_array[[1, 2]] = tang_array[[2, 1]]
print(tang_array)

92 #找出数组中最常出现的数字

z = np.random.randint(0, 10, 10)
print(np.bincount(z).argmax())

93 np.argpartition(-z, n)[:n]    #找出K个最大值的索引和值

z = np.arange(10000)
np.random.shuffle(z)
n = 5
print(np.argpartition(-z, n)[:n])

94. np.all(x==y, aixs=1) #找出一行中都相同的数,打印True

# 找出所有元素都相同的数据
x = np.array([[1, 1]])
p = np.array([[1, 1]])
print(np.all(x == p, axis=1)) z = np.random.randint(0, 5, (10, 3))
print(np.all(z[:, 1:]==z[:, :-1]))

np归纳总结(全)第一天的更多相关文章

  1. NP、NP-完全、NP-难问题

    What are the differences between NP, NP-Complete and NP-Hard? 0. 基本定义 判定问题(decision problem):一个答案是是或 ...

  2. IT面试最全逻辑题,收藏后成功率提高10%

    这是小学二年级的数学题: 猫妈妈钓到一些鱼,平均分给了7只小猫,每只小猫分到的鱼和剩下的鱼刚好一样多.猫妈妈最多钓到了多少条鱼? 这个是出来工作后的现场面试题: [1]假设有一个池塘,里面有无穷多的水 ...

  3. 小小知识点(六)——算法中的P问题、NP问题、NP完全问题和NP难问题

    转自CSDN默一鸣 https://blog.csdn.net/yimingsilence/article/details/80004032 在讨论算法的时候,常常会说到这个问题的求解是个P类问题,或 ...

  4. 设置Eclipse的类文件和xml文件代码自动补全

    原文:https://blog.csdn.net/erlian1992/article/details/53706736 我们在平常编写代码的时候,不会记住大多数的类和文件的属性,方法等等,这就需要我 ...

  5. 在vim编辑器python实现tab补全功能

    在vim编辑器中实现python tab补全插件有Pydiction,Pydiction可以实现下面python代码的自动补全: 1. 简单python关键词补全 2. python函数补全带括号 3 ...

  6. 深度学习原理与框架-神经网络-cifar10分类(代码) 1.np.concatenate(进行数据串接) 2.np.hstack(将数据横着排列) 3.hasattr(判断.py文件的函数是否存在) 4.reshape(维度重构) 5.tanspose(维度位置变化) 6.pickle.load(f文件读入) 7.np.argmax(获得最大值索引) 8.np.maximum(阈值比较)

    横1. np.concatenate(list, axis=0) 将数据进行串接,这里主要是可以将列表进行x轴获得y轴的串接 参数说明:list表示需要串接的列表,axis=0,表示从上到下进行串接 ...

  7. 撩课-Web架构师养成系列第一篇

    前言 Web架构师养成系列共15篇,每周更新一篇,主要分享.探讨目前大前端领域(前端.后端.移动端)企业中正在用的各种成熟的.新的技术.部分文章也会分析一些框架的底层实现,让我们做到知其然知其所以然. ...

  8. 在vim编辑器中实现python的tab补全

    在vim编辑器中实现python的tab补全 在vim编辑器中实现python tab补全插件有Pydiction,Pydiction可以实现下面python代码的自动补全:   1.简单python ...

  9. eclispe中打点不会提示的解决方法,以及自动补全

    Eclipse中打点无提示的解决办法 建了个JAVA工程,然后发现输入代码后,在输入.后面不会弹出来我所要的函数.  alt+/      提示No Default Proposals 自己找了半天, ...

随机推荐

  1. 安装完Linux Mint后,发现系统中竟没有中文输入法

    安装完Linux Mint后,发现系统中竟没有中文输入法,语言支持之后自动更新过程中有些安装包下载失败. 可以采取下面的方法安装上中文输入法. 1. 安装iBus: sudo add-apt-repo ...

  2. 什么是API?我们常说调用API

    如果你不知道 API 是什么,说明你英语真的很差. API 就是 Application Programming Interface 三个单词,如果你不能顾名思义的话,我就举例说明. 1. DOM A ...

  3. 在ubuntu16上进行nginx+uwsgi+django部署的简要步骤

    网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依 ...

  4. centos6 Nginx+Tomcat负载均衡配置

    一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...

  5. J2EE课程设计——企业人力资源管理系统

    一.项目名称:企业人力资源管理系统 小组成员:冯雨倩 汤杰 二.项目需求: 随着现在计算机技术的不断完善,以及现代经济的不断发展,传统的管理技术不再满足企业的需要,越来越多的企业注重计算机信息管理系统 ...

  6. 201621123010 《Java程序设计》第2周学习总结

    1.本周学习总结 Java有基本数据类型(类似c)和引用数据类型(不同于c)两种数据类型. Java是面向对象的语言,引用类型变量存放指向对象的引用,而不是该对象本身.因此判断两对象值是否相等时,需使 ...

  7. 使用C++实现二叉搜索树的数据结构

    需要注意的地方: ①二叉搜索树删除一个指定结点R,若R为叶子结点,则将R的父结点中指向R的指针改为指向nullptr:若R的左右子结点一个为空,一个非空,则将R的父结点中指向R的指针改为指向R的非空子 ...

  8. 2017年7月ROS学习资料小结

    <孙子兵法·谋攻篇>:"上兵伐谋,其次伐交,其次伐兵,其下攻城:攻城之法为不得已." 任何发生在自己国土上的战争,即便胜利,也饱含屈辱. ----~~~~----Gaz ...

  9. python 读写三菱PLC数据,使用以太网读写Q系列,L系列,Fx系列的PLC数据

    本文将使用一个gitHub开源的组件技术来读写三菱的plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...

  10. SM2的非对称加解密java工具类

    maven依赖 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov- ...