二、数组的基本使用

1、numpy数据类型

数据结构

numpy支持的数据类型比Python内置的类型要多很多,基本上可以和C语言的数据类型对应上,其中部分类型对应为Python内置的类型。

numpy的数值类型实际上是dtype对象的实例,并对应唯一的字符。

名称描述
bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)
uint16无符号整数(0 to 65535)
uint32无符号整数(0 to 4294967295)
uint64无符号整数(0 to 18446744073709551615)
float_float64 类型的简写
float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)

数据类型对象(dtype)

数据类型对象(numpy dtype类的实例)用来描述与数组对应的内存区域是如何使用,它描述了数据的以下几个方面:

  • 数据的类型(整数,浮点数或者Python对象)

  • 数据的大小

  • 数据字节顺序(小端法或大端法)【小端法:最小值存储在最小的地址,即低位组放在最前面;大端法:最重要的字节存储在最小的地址,即高位组放在最前面】

  • 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分

  • 如果数据类型是子数组,那么它的形状和数据类型是什么

每个内建类型都有一个唯一定义它的字符代码
字符对应类型
b布尔型
i(有符号) 整型
u无符号整型 integer
f浮点型
c复数浮点型
mtimedelta(时间间隔)
Mdatetime(日期时间)
O(Python) 对象
S, a(byte-)字符串
UUnicode
V原始数据 (void)
实例8:类似于C语言中的结构体,提前创建一个所需的数据类型
import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
print(a)

2、创建Ndarray数组对象

说明

numpy默认ndarray的所有元素的类型是相同的,这一点与Python中的list不同

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

array()函数

list1 = ['小猪小猪了了了', '小狗小狗汪汪汪', '小羊小羊嘛嘛嘛', '青蛙青蛙呱呱叫']
# array()
print('array()')
arr1 = np.array(list1)
print(arr1)
print(type(list1))  # <class 'list'>
print(type(arr1))  # <class 'numpy.ndarray'>

asarray()函数

原型:numpy.asarray(a,dtype=None,order=None)

作用:类似于numpy.array

empty()函数

原型:numpy.empty(shape,dtype=float,order=‘C’)

作用:创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组;初始数据随机

参数描述
shape数组形状
dtype数据类型,可选
order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。
import numpy as np 
x = np.empty([3,2], dtype = int) 
print (x)

zeros()函数

原型:numpy.zeros(shape,dtype=float,order=‘C’)

作用:创建指定大小的数组,数组元素以0来填充

ones()函数

原型:numpy.ones(shape,dtype=None,order=‘C’)

作用:指定形状的数组,数组元素以1来填充

full()函数

原型:numpy.full(shape,fill_value,dtype=None,order=‘C’)

作用:创建指定形状的数组,数组元素以fill_value来填充

import numpy as np
arr = np.full(5,fill_value=1024)
print(arr)

[1024 1024 1024 1024 1024]

eye()函数

原型:numpy.eye(N,M=None,k=0,dtype=float,order=‘C’)

作用:对角线为1,其他的位置为0

参数说明
N行数量
M列数量,默认等于行数量,可选
dtype数据类型,可选
order'C’用于C的行数组,或者’F‘用于FORTRAN的列数组

arange()函数

原型:numpy.arange(start,stop,step,dtype)

作用:创建数值范围并返回ndarray对象,根据start与stop指定的范围以及step设定的步长,生成一个ndarray。

import numpy as np
# arange()
print('arange()')
arr2 = np.arange(1, 100, 2)
print(arr2)
print(type(arr2))

frombuffer()函数

原型:numpy.frombuffer(buffer,dtype=float,count=-1,offset=0)

作用:用于实现动态数组,接受buffer输入参数,以流的形式读入转化成ndarray对象

注意:buffer是字符串的时候,Python3默认str是Unicode类型,所以要转成bytestring在原str前加上b

参数说明
buffer可以是任意对象,会以流的形式读入
dtype返回数组的数据类型,可选
count读取的数据数量,默认为-1,读取所有数据
import numpy as np
x = b'sunck is a good man'
arr = np.frombuffer(x,dtype='S1')
print(arr)

fromiter()函数

原型:numpy.fromiter(iterable,dtype,count=-1)

作用:从可迭代对象中建立ndarray对象,返回一维数组

import numpy as np
x = [1,2,3,4,5]
z = iter(x)
arr = np.fromiter(z,dtype='f')
print(arr)

logspace()函数

原型:numpy.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)

作用:创建一个于等比数列

参数说明
start序列的起始值为:base**start
stop序列的终止值为:base**stop.如果endpoint为true,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为true时,数列中中包含stop值,反之不包含,默认是True
base对数log的底数,默认是10
dtypendarray的数据类型
import numpy as np
arr = np.logspace(1.0, 2.0, 10)
print(arr)

[ 10. 12.91549665 16.68100537 21.5443469 27.82559402
35.93813664 46.41588834 59.94842503 77.42636827 100. ]

linspace()函数

原型:numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

作用:创建一维数组的等差数列构成。

参数描述
start序列的起始值
stop序列的终止值,如果endpoint为true,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为true时,数列中包含stop值,反之不包含,默认是True
restep如果为True时,生成的数组中会显示间距,反之不显示。
dtypendarray的数据类型

random.rand()函数

作用:rand()函数是随机创建[0,1)的几个随机数

import numpy as np
rand1 = np.random.rand(5)
print(rand1)
rand2 = np.random.rand(3, 4)
print(rand2)

[0.49182049 0.55494283 0.64066511 0.24876895 0.66749408]
[[0.5511636 0.26634502 0.92861776 0.99586307]
[0.18416113 0.6249501 0.30918162 0.67845577]
[0.07673799 0.88851927 0.54545835 0.41263138]]

random.random()函数

原型:random(size=None)

作用:生成[0,1)之间的随机数

random.randint()函数

原型:randint(low,high=None,size=None,dtype=‘1’)

作用:生成随机数

参数说明
low包含的下限
high不包含的上限
size元素个数
dtype元素类型
import numpy as np
print("# randint()函数是指定范围的整数随机函数")
randint1 = np.random.randint(1, 5, 10)
print(randint1)
randint2 = np.random.randint(1, 5, (2, 5))
print(randint2)

random.randn()函数

原型:randn(d0,d1,…,dn)

作用:返回一个或一组样本,具有标准正态分布,N(0,1)

import numpy as np
print("# randn()函数是N(0,1)的标准正态分布的随机函数")
randn1 = np.random.randn(5)
print(randn1)
randn2 = np.random.randn(3, 4)
print(randn2)

randn()函数是N(0,1)的标准正态分布的随机函数

[-0.68378205 0.49604937 -0.38792573 0.23037595 1.29181071]
[[-1.11512 1.1876267 -0.67914036 -0.22597874]
[ 1.3300902 0.19336917 0.02158708 -1.2945824 ]
[ 0.01044411 0.07133812 -1.35733938 -0.41487295]]

random.normal()函数

原型:normal(loc=0.0,scale=1.0,size=None)

作用:生成高斯分布的概率密度随机数

参数说明
loc浮点型,此概率分布的均值(对应着整个分布的中心centre)
scale浮点型,此概率分布的标准差(对应分布的宽度,scale越大越矮胖,scale越小越瘦高)
size输出的shape,默认为None,只输出一个值

4、Ndarray数组属性

Numpy数组的维度称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。

在Numpy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是Numpy中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维度

很多时候可以声明axis。axis=0,表示沿着第0轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。

常用属性

属性说明
ndim秩,即轴的数量或维度的数量
shape数组的维度,对于矩阵,n行m列
size数组元素的总个数,相当于.shape中n*m的值
dtypendarray对象的元素类型
itemsizendarray对象中的每个元素的大小,以字节为单位
flagsndarray对象的内存信息
realndarray元素的实部
imagndarray元素的虚部
data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性

------ 以上内容均为学习笔记仅供参考,如有不准确或错误内容,望您批评指教。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值