Numpy基础(1)

- 安装,

pip install numpy

- 导入

import numpy as np

- 创建数组

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

  • 创建一个三维的空数组,里面的数据时内存中残留的内容
np.empty((2,3,2))

array([[[1.59187215e-312, 0.00000000e+000],
        [1.41537862e+161, 5.22182633e+180],
        [7.33952596e+223, 4.27255707e+180]],

       [[7.04850274e-120, 4.90900659e+252],
        [3.88621453e+285, 2.91237123e+257],
        [4.71294503e+257, 2.59818825e-306]]])
  • 创建从0-20公差为2的一维数组
np.arange(0,20,2)

array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
  • 生成从0到2均分的五个数
np.linspace(0,2,5)
array([0. , 0.5, 1. , 1.5, 2. ])
  • 创建3*3的在0-1之间均匀分布的随机数组
np.random.random((3,3))

array([[0.29680299, 0.19137578, 0.26913372],
         [0.23225081, 0.52695982, 0.82736975],
         [0.13357885, 0.6480721 , 0.29805271]])
  • 创建3*3的、均值为0,方差为1的正态分布随机数

np.random.normal(0,1,(3,3))

array([[ 0.71021081, -0.68369742, -0.4169674 ],
         [ 0.04374575,  0.42580965, -2.02402947],
         [ 0.31068114, -0.79955925, -0.36962168]])
  • 0-10随机数,3*3
np.random.randint(1,10,(3,3))

array([[8, 9, 8],
       [6, 2, 9],
       [5, 1, 2]])
  • 单位矩阵
np.eye(3)

array([[1., 0., 0.],
      [0., 1., 0.],
      [0., 0., 1.]])
  • 数据类型转换 变量.astype(np.数据类型),会返回一个原始数组的拷贝
arr = np.array([1,2,3,4,5])
arr.dtype
out:dtype('int32')

float_arr = arr.astype(np.float64)
float_arr
out:array([1., 2., 3., 4., 5.])
  • 小数转换为整数会直接截掉小数部分
arr = np.array([1.2,4.5,6.8])
arr
out:array([1.2, 4.5, 6.8])

arr.astype(np.int32)
out:array([1, 4, 6])
  • 字符串不能直接转换为整数
arr=np.array(['1.2'])
#先转换为float型再转换为整数
arr.astype(np.float).astype(np.int32)
out:array([1])
  • 创建一个包含10个随机数的3*4的矩阵
x=np.random.randint(10,size=(3,4))
x
out:array([[5, 0, 3, 3],
           [7, 9, 3, 5],
           [2, 4, 7, 6]])
  • 数组的选取:选取后是原数组的视图而不是拷贝,省内存
    数组的索引
#一维数组
x=np.array([1,2,3,4,5,6])
x
out:array([1, 2, 3, 4, 5, 6])
x[0]---->1
x[-1]---->6
#二维数组一样
x=np.random.randint(10,size=(3,4))
x
out:
array([[8, 8, 1, 6],
       [7, 7, 8, 1],
       [5, 9, 8, 9]])
#x[行,列]
#第二行倒数第一列
x[2][-1]
out:9
  • 数组的切片
# x[start:stop:step] x[从哪开始,到哪结束,步长值]
#一维数组
x=np.arange(0,20,2)
x
out:array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

#从第一个元素开始,到最后一个元素结束但不包括最后一个元素,左闭右开
x[0:-1:2]
out:array([ 0,  4,  8, 12, 16])
x[:] #获取所有值
out:array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

#二维数组x[行:start:stop:step,列:start:stop:step]
x=np.random.randint(10,size=(3,4))
x
out:
array([[4, 3, 3, 2],
       [0, 4, 8, 9],
       [9, 5, 8, 8]])
# 选取数组的前两行和前三列
x[:2,:3]
out:
array([[4, 3, 3],
       [0, 4, 8]])
#选取第一行
x[0,:]
out:array([4, 3, 3, 2])
#第一列
x[:,0]
OUT:
array([4, 0, 9])

# 旋转一百八十多度
x[::-1,::-1]
OUT:
array([[8, 8, 5, 9],
       [9, 8, 4, 0],
       [2, 3, 3, 4]])

# 调用copy()方法创建副本
x_cp=x.copy()
x_cp
out:
array([[4, 3, 3, 2],
       [0, 4, 8, 9],
       [9, 5, 8, 8]])
  • 变换数组 : reshape()方法
arr = np.arange(1,10)
arr
out:array([1, 2, 3, 4, 5, 6, 7, 8, 9])
arr.reshape((3,3))
out:array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

# 数组拼接
m=np.array([1,2,3])
n=np.array([3,2,1])
np.concatenate([m,n])
out:
array([1, 2, 3, 3, 2, 1])

#按轴axis拼接,默认axis=0,得到下面的结果,属于垂直拼接
grid = np.arange(1,7).reshape(2,3)
grid
out:
array([[1, 2, 3],
       [4, 5, 6]])
np.concatenate([grid,grid])
out:
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])

#axis=1时水平拼接
np.concatenate([grid,grid],axis=1)
out:
array([[1, 2, 3, 1, 2, 3],
       [4, 5, 6, 4, 5, 6]])

# 垂直栈拼接 vstack()
np.vstack([grid,grid])
out:
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
# 水平栈拼接 : hstack()
np.hstack([grid,grid])
out:
array([[1, 2, 3, 1, 2, 3],
       [4, 5, 6, 4, 5, 6]])
  • 数组的分割
x=np.random.randint(12,size=(12,))
x
out:array([11,  2,  9, 11,  7,  2,  7,  5,  8,  0, 10,  5])
y1,y2,y3=np.split(x,[4,8])
print(y1,y2,y3)
OUT:
[11  2  9 11]   [7 2 7 5]   [ 8  0 10  5]

# 垂直栈和水平栈分割

x=np.random.randint(16,size=(4,4))
x
out:
array([[ 7, 10, 10, 5],
[ 9, 1, 2, 4],
[15, 14, 13, 12],
[11, 0, 12, 0]])
a_up,a_dn=np.vsplit(x,[2])
a_up
out:
array([[ 7, 10, 10, 5],
[ 9, 1, 2, 4]])
a_dn
out:
array([[15, 14, 13, 12],
[11, 0, 12, 0]])

水平栈分割

a_l,a_r=np.hsplit(x,[2])
a_l
out:
array([[ 7, 10],
[ 9, 1],
[15, 14],
[11, 0]])
a_r
out:array([[10, 5],
[ 2, 4],
[13, 12],
[12, 0]])

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

推荐阅读更多精彩内容

  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,130评论 0 18
  • Numpy是Python的第第三方模块,用于科学计算。 1.属性 列表转化为数组: 2. array的创建 指定数...
    井底蛙蛙呱呱呱阅读 3,374评论 0 10
  • 换工作之后,PYTHON就放下啦,基本没接触了,也都忘记的差不多了,现在重新捡起来 1.1 NumPy Array...
    wqh8384阅读 570评论 0 1
  • 一.NumPy的引入 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列...
    wlj1107阅读 1,015评论 0 2
  • Numpy的组成与功能 Numpy(Numeric Python)可以被理解为一个用python实现的科学计算包,...
    不做大哥好多年阅读 4,286评论 0 10