Python,Numpy库常用汇总

首先是numpy中数组–ndarray类,需要注意的是数组与列表最大的一个不同点是:数组的数据类型基本上都是一个,而列表每个元素的数据类型都可以不同。

ndarray的属性:

ndarray是一个多维数组对象,包括了两部分:实际存储的数据和数组的属性,数组的属性包括了:数组的秩、数组的尺度、数组元素的个数、数组元素类型、每个元素的大小。

属性的名称作用/意义
a.ndim数据的维数
a.shape数组的形状(比如矩阵几行几列)
a.size元素的个数
a.dtype元素的种类
a.itemsize元素的大小(字节)

下列出ndarray中允许的数据类型(numpy自带)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ndarray的创建:

1、通过已有的列表、元组来创建:
Ex:

mlist=[1,1,1,1]
a=np.array(mlist)
print('a',a)
mtuple=[2,2,2,2]
b=np.array(mtuple)
print('b',b)

结果:
a [1 1 1 1]
b [2 2 2 2]

1、这里a和b都是numpy.ndarray类。
2、此外array函数可以改变元素的数据类型:array(list/tuple,dtype=…)
3、numpy中还有另外一个函数.tolist()可以将数组转化为列表

2、一些常用创建函数(与matlab类似)
在这里插入图片描述
Ex:

import numpy as np
a=np.arange(10)
print('a',a)
b=np.ones((3,2))
print('b',b)  # zeros与之类似
c=np.full((3,2),2)
print('c',c)
d=np.eye(3)
print('d',d)

结果:
a [0 1 2 3 4 5 6 7 8 9]
b [[1. 1.]
[1. 1.]
[1. 1.]]
c [[2 2]
[2 2]
[2 2]]
d [[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
3、通过数组创建
在这里插入图片描述
Ex:

import numpy as np
a = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3]])
b = np.ones_like(a)
c = np.full_like(a, 3)
print('b', b)
print('c', c)

结果:
b [[1 1 1]
[1 1 1]
[1 1 1]]
c [[3 3 3]
[3 3 3]
[3 3 3]]
在这里插入图片描述
Ex:

import numpy as np
a = np.linspace(1,10,4)
b = np.linspace(1,10,4,endpoint = False)
c = np.concatenate((a,b))
print('a', a)
print('b', b)
print('c', c)`

结果:
a [ 1. 4. 7. 10.]
b [1. 3.25 5.5 7.75]
c [ 1. 4. 7. 10. 1. 3.25 5.5 7.75]
:linspace(a,b,c)的作用是将(a,b)区间分成c-1份,数组内为c个边界点,如果加入endpoint=False则不包括b点 将区间c等分,数组内为前c个点
4、重组数组:
在这里插入图片描述

Ex:

import numpy as np
a = np.ones((2, 3, 4))
print('a', a)
b = a.reshape((3, 8))
print('b', b)
print('a', a)
a.resize((3, 8))
print('a', a)
e = a.flatten()
print('e', e)

结果:
a [[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]

[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
b [[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]]
a [[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]

[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
a [[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1.]]
e [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
:reshape返回的是一个重组后的数组,而resize则是将原数组进行重组,返回值为None;
5、转化数据类型:atype函数
Ex:

import numpy as np
a = np.ones((2, 3, 4),dtype = int)
print('a', a)
b = a.astype(dtype = float)
print('b', b)

结果:
a [[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]

[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]]
b [[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]

[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]

1、如果dtype选择与原有的形式相同,则相当于进行了一次拷贝。
2、这里dtype选择的类型直接为int和float,但具体是多少位的由程序“自己选择”。

ndarray数组的索引和切片

ndarray数组的索引和切片与python中列表的操作相似,下直接用例子来说明:
Ex

import numpy as np
a = np.arange(30)
a.resize((2,3,5))
print('1、',a)
print('2、',a[0,0,0])  # 索引时不同维度用‘,’隔开
print('3、',a[:,:,:])  # 切片时‘:’表示的是整个维度 如果选择一部分则用a:b的形式代替(不包括b)
print('4、',a[:,:,::2])   # 切片时,如果使用‘::’的形式,则a:b:c的含义为,a,b以c的间隔大小进行切片

结果:
1、 [[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]

[[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]]]
2、 0
3、 [[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]

[[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]]]
4、 [[[ 0 2 4]
[ 5 7 9]
[10 12 14]]

[[15 17 19]
[20 22 24]
[25 27 29]]]
注:
1、切片时,a:b不包括b,且注意与列表相似,数组元素从0开始数
2、数组一样可以用负数来索引和切片,-1表示维度中最后一个

ndarray数组的运算

数组的运算本质上是数组元素的运算,下列出一部分常用的运算之后使用:
我的
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值