Python--numpy的使用

前言

  这个东西学了好长时间了,一直没时间去发表它。之前看一些大佬说,只用numpy做机器学习的都是大神。刚开始接触它的时候感觉是:这是啥啊!乱七八糟的(因为把的运算规则都给忘完了)!现在看来,嗯!是这么回事!(所以,永远不要对自己不知道的东西妄下定论。如果下了,到后来就会发现,小丑竟是我自己!)


开搞

1.先安装numpy,懂的都懂,不懂百度!

2.引入

import numpy as np

3.使用
3.1来先搞个数组玩玩(这是一个普普通通的数组)

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(type(arr))  # <class 'list'>
print("---------------------------------------1")
image.png

3.2使用numpy的数据类型

array1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(type(array1))  # <class 'numpy.ndarray'>
print(array1 + 1)
print("---------------------------------------2")
image.png

3.3numpy操作

array2 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(array2 + array2)
print(array2 - array2)
print(array2 * array2)  # 相乘的第一种方法
print(np.multiply(array2, array2))  # 相乘的第二种方法
print(np.dot(array2, array2))  # 相乘的第三种方法,得到的是一个数,这个方法是一个真正的矩阵的乘法
print(array2 / array2)
print("---------------------------------------3")
image.png

3.4numpy基本api

_list = [1, 2, 3, 4, 5, 6]
array3 = np.array(_list)
print(array3)
print(array3.dtype)  # int32
print(array3.size)
print(array3.ndim)  # 维度
array3.fill(0)
print(array3)  # 矩阵的填充
print("---------------------------------------4")
image.png

3.5numpy索引和切片

array4 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(array4[0])  # 第一个数
print(array4[-1])  # 最后一个数
print(array4[0:2])  # 第0个到第1个
print(array4[:-1])  # 最后一个不取
print(array4[-3:])  # 从倒数第3个开始取到最后一个值
print("---------------------------------------")

array5 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(array5.shape)  # 形状
print(array5.size)  # 大小
print(array5.ndim)  # 维度
array5[1][1] = 10
print(array5)  # 取某一个值
print(array5[1])  # 取一行值
print(array5[:, 1])  # 取一列值
print(array5[:, 0:2])  # 取2列值
print(array5[0:2, 0:2])  # 取2行的2列值
print("---------------------------------------5")
image.png

3.6numpy矩阵的赋值 copy

copy = array5.copy()  # 可以看出这个方法是将array5的数据给复制了一份给了copy,如果直接 = ,就是把地址值给了copy,这时就会出现两个矩阵数据都被修改了
copy[1][1] = 50
print(copy)
print(array5)
print("---------------------------------------6")
image.png

3.7numpy简单的生成ndarray矩阵的方法

array6 = np.arange(0, 100)  # 生成从0到100的一维矩阵
print(array6)
array7 = np.arange(0, 100, 10)  # 从0到100中隔10个取一个
print(array7)
mask = np.array([1, 0, 3, 0, 5, 0, 7, 0, 9], dtype=bool)
print(mask)
print(array4[mask])  # 当它为true的时候就打印出来
print("---------------------------------------7")
image.png

3.8numpy构造随机数并相加

rand = np.random.randint(0, 100)
print(rand)
randint = np.random.randint(1, 10, size=(3, 3))  # 生成1-10的随机数,并排成3行3列
print(randint)
# 维度从0开始算,例如二维矩阵就是0和1,axis就是维度号
print(randint.ndim)
np_sum = np.sum(randint)  # 求和
print(np_sum)
np_sum2 = np.sum(randint, axis=0)  # 每一个维度按列求和
print(np_sum2)
np_sum3 = np.sum(randint, axis=1)  # 每一个维度按行求和
print(np_sum3)
randint2 = np.random.randint(1, 10, size=(3, 3, 3))  # 生成1-10的随机数,并排列成3维矩阵
print(randint2)
n = np.sum(randint2, axis=2)
# axis=0是取这个三维矩阵中每一个二维矩阵中相同位置的一维矩阵中相同位置的数相加
# axis=1是取这个三维矩阵中每一个二维矩阵中每一个一维矩阵中相同位置的数相加
# axis=2是取这个三维矩阵中每一个二维矩阵中同一个一维矩阵中所有的数相加
print(n)
print("---------------------------------------8")
image.png

3.9numpy乘积以及一些常用api

randint3 = np.random.randint(0, 10, size=(2, 2))
print(randint3)
print(randint3.prod(axis=0))  # 按列求积
print(randint3.prod(axis=1))  # 按行求积
print(randint3.max(axis=0))  # 求最大值
print(randint3.min(axis=0))  # 求最小值
print(randint3.argmax(axis=0))  # 求最大值索引
print(randint3.argmin(axis=0))  # 求最小值索引
print(randint3.mean(axis=0))  # 按列求均值
print("---------------------------------------9")
image.png

3.10numpy排序

randint4 = np.random.randint(0, 10, size=(2, 5))
print(randint4)
print(np.sort(randint4, axis=0))  # 按列排序
print(np.sort(randint4, axis=1))  # 按行排序
print(np.argsort(randint4, axis=0))  # 按列排序并显示它原来的索引位置
print(np.argsort(randint4, axis=1))  # 按行排序并显示它原来的索引位置
print("---------------------------------------10")
image.png

3.11numpy操作矩阵形状

randint5 = np.random.randint(0, 10, size=(2, 5))
print(randint5.shape)
randint5.shape = 10  # 变成了一位矩阵
print(randint5)
randint5.shape = 1, 10  # 1*10=2*5,重新规定形状为1*10的
print(randint5)
reshape = randint5.reshape(1, 10)  # 规定为1*10的矩阵的另一种方式
print(reshape)
randint5.shape = 5, 2  # 5*2=2*5
print(randint5)
newaxis_ = randint5[np.newaxis, :]  # 在前面新增一个维度
print(newaxis_)
print(newaxis_.shape)
newaxis_2 = randint5[:, np.newaxis]  # 在中间新增一个维度
print(newaxis_2)
print(newaxis_2.shape)
newaxis_3 = randint5[:, :, np.newaxis]  # 在后面新增一个维度
print(newaxis_3)
print(newaxis_3.shape)
newaxis_4 = newaxis_3.squeeze()  # 压缩空的维度
print(newaxis_4)
print(newaxis_4.shape)
newaxis_5 = newaxis_4.T  # 矩阵的转置
print(newaxis_5)
print(newaxis_5.shape)

print("---------------------------------------11")
image.png

3.12numpy矩阵连接

arr1 = np.random.randint(10, size=(2, 5))
print(arr1)
arr2 = np.random.randint(10, size=(2, 5))
print(arr2)
concatenate = np.concatenate((arr1, arr2), axis=1)  # 矩阵的拼接是按元组的形式传进去的,并且指定在哪个维度上进行拼接
# axis=0时把后面的矩阵直接拼到第一个矩阵的后面
# axis=1时把后面的矩阵第一行拼到第一个矩阵的第一行,依次类推
print(concatenate)
zeros = np.zeros((2, 3))  # 这里面必须放一个形状,就是指定几行几列,指定一个2行3列的全0的矩阵
print(zeros)
ones = np.ones((3, 3))  # 这里面必须放一个形状,就是指定几行几列,指定一个3行3列的全1的矩阵
print(ones)
print("---------------------------------------12")
image.png

3.13numpy矩阵的比较

arange__reshape1 = np.arange(0, 6).reshape(2, 3)
arange__reshape2 = np.arange(0, 6).reshape(2, 3)
print(arange__reshape1 == arange__reshape2)
arange__reshape2[0][2] = 10
print(arange__reshape1 == arange__reshape2)
print("---------------------------------------13")
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容