Numpy:array的创建和ndarray的基本操作

Numpy

导入:import numpy as np

1.创建数组
  • 一维数组的创建
    arr1=np.array([1,2,3,4,5],float)

  • 二维数组的创建
    arr2=np.array([[1,2,3],[3,4,5],[1,5,8]])

注意:
如果传进来的列表中包含不同的类型,则统一为统一类型,str>float>int

2.使用np的routines函数创建
  • np.ones([3,3])
    输出结果:
    array([[ 1., 1., 1.],
    [ 1., 1., 1.],
    [ 1., 1., 1.]])

  • np.full([3,3],3.14)
    输出结果:
    array([[ 3.14, 3.14, 3.14],
    [ 3.14, 3.14, 3.14],
    [ 3.14, 3.14, 3.14]])

  • np.eye(4)
    eye()返回一个对角线为1的矩阵
    输出结果:
    array([[ 1., 0., 0., 0.],
    [ 0., 1., 0., 0.],
    [ 0., 0., 1., 0.],
    [ 0., 0., 0., 1.]])

  • 等差数列(此处num=5)
    np.linspace(0,10,5)
    输出结果:
    array([ 0. , 2.5, 5. , 7.5, 10. ])

  • 等差数列(此处step=2)
    np.arange(0,10,2)
    输出结果:
    array([0, 2, 4, 6, 8])

  • 随机整数
    np.random.randint(0,10,5)
    输出结果:
    array([0, 7, 2, 3, 7])

  • np.random.seed(100)#随机的种子,有了种子,每次都一样
    np.random.randn(10)
    输出结果:
    array([ 0.37332715, -0.2887605 , 0.04985088, -0.93815832, -0.4087037 ,
    1.13352254, 0.52713526, -0.76014192, -0.97292788, 0.16290446])

  • random.random()默认0-1,左开右闭
    np.random.seed(3)#时间种子,将时间固定,产生固定不变的随机数
    np.random.random(size=[2,2])
    输出结果:
    array([[0.5507979 , 0.70814782],
    [0.29090474, 0.51082761]])

3.ndarray的属性

4个必记参数:

  • ndim:维度
  • shape:形状
  • size:总长度
  • dtype:元素类型

注意:dtype返回数组元素的类型,type()函数返回数组类型

4.索引

一维与列表完全一致 多维时同理

arr=np.random.randint(10,50,size=(3,4))
arr
a
array([[19, 46, 25, 10],
   [38, 35, 39, 39],
   [18, 19, 10, 46]])
  arr[1][2]
  39
5.切片

用以上例子中的a:
a[0:2] 获取前两行
a[0:2,0:2] 获取前两行前两列
a[:,0:2] 获取前两列
a[::-1] 行倒序
a[:,::-1] 列倒序
a[::-1,::-1] 行、列全部倒序

6.变形
arr=np.random.randint(1,100,size=(100,))
  • 将一个一维数组arr变成多维数组

    arr.reshape((10,10)) #两个参数分别是新数组的行和列
    
  • 将多维数组变成一维数组

    a.reshape(12) #12是数组长度
    
  • arr.reshape(-1,10)
    -1:手动指定列数,自动计算行数

7.级联

np.concatenate() 级联需要注意的点:

  • 级联的参数是列表:一定要加中括号
  • 维度必须相同
  • 形状相符
  • axis参数:0表示纵向级联,1表示横向级联;axis的范围由数组维度决定0-(维度-1)

np.hstack与np.vstack 水平级联与垂直级联

8.切分
  • np.spilt()
x = np.arange(1,10)
x

输出:
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

x1,x2,x3 = np.split(x,[3,5])
print(x1,x2,x3)
输出:
[1 2 3] [4 5] [6 7 8 9]
  • np.hsplit() 切分行

    x = np.arange(16).reshape(4,4)
    x
    输出:
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15]])
    
    print(np.hsplit(x,[2,3]))
    输出:
    [array([[ 0,  1],[ 4,  5], [ 8,  9], [12, 13]]),
             array([[ 2],  [ 6],  [10], [14]]), 
             array([[ 3],  [ 7],  [11],  [15]])]
    
  • np.vsplit () 切分列

    x = np.arange(16).reshape(4,4)
    x
    输出:
    array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11],
           [12, 13, 14, 15]])
    print(np.vsplit(x,[2,3]))
    输出:
    [array([[0, 1, 2, 3],
            [4, 5, 6, 7]]), array([[ 8,  9, 10, 11]]), array([[12, 13, 14, 15]])]
    
9.副本
  • 所有赋值运算不会为ndarray的任何元素创建副本。对赋值后的对象的操作也对原来的对象生效

    a = np.array([1,2,3])
    b=a
    print(a,b)
    
    输出:
    [1 2 3] [1 2 3]
    
    b[0]=2
    a
    输出:
    array([2, 2, 3])
    
  • copy()函数可创建副本,对副本的操作,不会影响原来的对象

    a = np.array([1,2,3])
    b = a.copy()
    b
    输出:
    [1,2,3]
    
    b[0]=3
    print(a,b)
    输出:
    [1 2 3] [3 2 3]
    
10.使用matplotlib.pyplot获取一个数组,数据来源于一张图片
import matplotlib.pyplot as plt
img=plt.imread('C:/Users/jiaxinyi/Desktop/a4coho1467042412050.jpg')
img.shape #得到的数组形状
输出:
(650,1200,3)

图一

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值