numpy
Posted feichengwurao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy相关的知识,希望对你有一定的参考价值。
# 列表推到式
# a = [num for num in range(10)]
# print(a)
import numpy as np
# 创建数组的3种方法
# a = np.arange(1,5,dtype=\'float\',\'int\',\'int32\',\'int64\')
# 这个方法 生成列表数组
# np.arange(开始,结束,步长) 只写一个数 是从0开始 到那结束
# print(a) # 推荐这个方法 修改数据类型
a = np.array(range(1,5))
# a = np.array([1,2,3,4,5])
# a.dtype # 查看数据类型
\'\'\'a.shape # 返回 数组是 几行几列
a.ndim # 返回 数组是 维度
a.size # 返回 所有数据元素的数目
a.dtype # 查看数组类型
a.ones(数或元组) # 创建一个为1的3个 [1 1 1]
# 如果是(2,3) 则显示为两行三列的数组
[[1,1,1] # (行,列)
[1,1,1]]
a.zeros 同上
a.full(个数或个数元组,数或数组) (行,列) 其他的同上
a.argsort()[-3:] # 取下标的方法 并默认升序排列
np.ones_like(a) 把数组里所有的数 都改成 1
np.full_like(a) 把数组里所有的数 都改成 0
np.zeros(a) 把数组里所有的数 都改成 自定义数 \'\'\'
# NP里的random
# np.random.randn() # 一个随机数 单个
# np.random.randn(3) # 3个随机数 一维
# np.random.randn(3,2) # 二维数组的随机数 二维
# np.random.randn(2,3,2) # 两个二维数组的随机数 三维
a = np.arange(10).reshape(2,5) # 2:行 4:列
# a = np.arange(10) 第二种写法
# a.reshape(2,5)
# print(a)
\'\'\'
[[0 1 2 3 4]
[5 6 7 8 9]]
shape 返回数组的维度
reshape 不改变数组的值 修改形状
\'\'\'
# 数组的计算
# a + 1 #是数组里的每一个元素都 + 1
# 两个相同维度数组做运算 是每个数组里的对应的元素运算
# 两个不同维度数组做运算 二维数组 + 两个相同的一维数组 运算结果
# 广播规则
# 可以运算 列相同久可以运算
# 形状相同 可以运算
# 形状不同 前后缘维度相同 可以运算
# 4,2 2就是后缘 4是前缘
# 5,2
# 不能运算
# 超出后援维度 不可以运算
# 超出前援维度 不可以运算
# 索引与切片
# A[0,0] #0行 0列
# A[-1,2] #最后一行 2列
# A[2] #2列的所有内容
# A[-1] #最后一行
# A[0:-1] #取出了最后一行之外的其他所有行 顾头不顾尾
# A[0:2,2:4] #取0和1行 ,2和3列
# A[:,2] #取所有行中的第二列
# print(a[:,0:-1])
\'\'\'
两行 5个元素 上面的取值 只取到前4个
[[0 1 2 3]
[5 6 7 8]]
\'\'\'
# 布尔索引和条件索引
# a 是0-9的数组
# select = a > 5
# print(select) # 这里返回的布尔值 [[False False False False False]
# print(a[select]) # 直接把筛选条件放到[]里 就会拿到真值 [6 7 8 9]
# a[a <= 5] = 0
# a[a > 5] = 1
# print(a) # [[0 0 0 0 0],[0 1 1 1 1]]
# 把数组满足条件的赋值
# 外层的a[]是筛选 内层a>5 作为外层数组的切片条件
# 返回的都是一维数组
# print(a[a <= 5]) # [0 1 2 3 4 5] 每个元素 按条件拿取
# 二维数组 所有行 第三列 大于5的 加上520
# a = np.arange(1,21).reshape(4,5)
# select = a[:,3] > 5 # 确立筛选条件 所有行 第3列大于5
#
# a[select] += 520 # 运算
# print(a)
# \'\'\'[[ 1 2 3 4 5]
# [526 527 528 529 530]
# [531 532 533 534 535]
# [536 537 538 539 540]]
# [ 4 529 534 539]\'\'\'
#
# print(a[:,3])
# # 在切片取一次是可以取到的
# # [ 4 529 534 539] 只是取到第3列 不可以全部取到
# 正确方法
# a[:,3][select] += 520
# 这才是正确需要的
# 2个筛选条件 第一个先帅选出操作目标 在筛选条件
\'\'\'[[ 1 2 3 4 5]
[ 6 7 8 529 10]
[ 11 12 13 534 15]
[ 16 17 18 539 20]]\'\'\'
# 与或 不能用 or and 可以用 & |
# a = np.arange(10)
# select = (a%2==0) | (a<8)
# print(a[select])
\'\'\'
[0 2 4 6] &
[0 1 2 3 4 5 6 7 8] |
\'\'\'
# 神奇索引
# print(a[[2,3,5]])
\'\'\'
[2 3 5]
\'\'\'
# 数组[[行,行,行,行],[列,列,列,列]]
# 拿数据 是0行0列 1行1列 2行2列 3行3列 数字对应上面列表的下标
# 数组[[:],[列,列]]
# 拿数据 是所有行 列:列
# 取最大的3个数
a = np.random.randint(1,100,10)
print(a)
print(\'-\'*30)
b = a.argsort()[-3:] # 取下标的方法 并默认升序排列
print(b)
print(a[b])
\'\'\'
[94 21 91 31 85 84 4 92 13 82] 列表随机数
------------------------------
[2 7 0] 记录下表位置 默认升序 取到最后3个[-3:]
[91 92 94] 找出最大的3个数字
\'\'\'
# npmpy 轴
以上是关于numpy的主要内容,如果未能解决你的问题,请参考以下文章