python之多维数组(一)

python 专栏收录该内容
28 篇文章 1 订阅

Numpy中定义的最终对象是称为ndarray的N维数组类型。它描述相同类型的元素集合。可以使用基于零的索引访问集合中的项目。

ndarray创建方式

array()函数

接收一个普通的python序列,并将其转换为ndarray。
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

序号参数描述
1object任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
2dtype数组的所需数据类型,可选。
3copy可选,默认为true,对象是否被复制。
4orderC(按行)、F(按列)或A(任意,默认)。
5subok默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。
6ndimin指定返回数组的最小维数。
import numpy as np
# 例子01
a = np.array([1,2,3])
print(a)
print(type(a))

# 多于一个维度
a2 = np.array([[1,2],[3,4]])
print(a2)

# 最小维度
a3 = np.array([1,2,3,4,5],ndmin = 2)
print(a3)
empty()函数

创建指定形状和dtype的未初始化数组
numpy.empty(shape, dtype = float, order = 'C')

序号参数描述
1Shape空数组的形状,整数或整数元组
2Dtype所需的输出数组类型,可选
3Order'C’为按行的 C 风格数组,'F’为按列的 Fortran 风格数组
import numpy as np

#例: 数组元素为随机值
arr = np.empty((3,3),dtype = 'i1')
print(arr)
zeros()函数

创建指定长度或者形状的全零数组。

# 例
arr = np.zeros((3,3))
print(arr)

# 自定义类型
arr = np.zeros((3,3), dtype =  [('x',  'i4'),  ('y',  'i4')])
print(arr)

ones()函数

创建指定长度或者形状的全1数组。

arr = np.ones((2,3,4))
print(arr)
# 自定义类型
arr = np.ones((3,3), dtype =  [('x',  'i4'),  ('y',  'i4')])
print(arr)
asarray()函数

类似 numpy.array 可以将Python序列转换为ndarray。

# 来自列表
arr = [1,2,3,4]
arr2 = np.asarray(arr)
print(arr2)
print(type(arr))
print(type(arr2))

# 来自元组
arr = (1,2,3,4)
arr2 = np.asarray(arr)
print(arr2)
print(type(arr))
print(type(arr2))

# 来自元组列表
arr = [(1,2,3,4),(5,6,7,8)]
arr2 = np.asarray(arr)
print(arr2)
print(type(arr))
print(type(arr2))

arange()函数

类似python的range函数,通过指定开始值、终值和步长来创建一个一维数组,注意:最终创建的数组不包含终值。
numpy.arange(start,stop,step,dtype)

arr = np.arange(5,dtype = float)
print(arr)
linspace()函数

通过指定开始值、终值和元素个数来创建一个一维数组,数组的数据元素符合等差数列,可以通过endpoint关键字指定是否包含终值,默认包含终值。
等差数列
numpy.linspace(start,stop,num,endpoint,retstep,dtype)

序号参数描述
1start起始值
2stop结束值
3num生成等间隔样例的数量,默认为50
4endpoint序列中是否包含stop 值 默认为 True
arr = np.linspace(10,20,9)
print(arr)

arr = np.linspace(10,20,5,endpoint=False)
print(arr)

arr = np.linspace(10,20,5,retstep=True)
print(arr) #返回步长

logspace()函数

和linspace函数类似,不过创建的是等比数列数组。
numpy.logscale(start, stop, num, endpoint, base, dtype)

序号参数描述
1start起始值是base ** start
2stop终止值是base ** stop
3.num范围内的数值数量,默认为50
4endpoint如果为true,终止值包含在输出数组当中
5base对数空间的底数,默认为10
6dtype输出数组的数据类型,如果没有提供,则取决于其它参数
arr = np.logspace(0,2,5)  
#  0表示10的0次方,2表示10的2次方,5表示最终生成元素数量为5
print(arr)

arr1 = np.logspace(1,10,5,base = 2)
print(arr1)
random()函数

使用随机数填充数组,即使用numpy.random中的random()函数来创建0-1之间的随机元素,数组包含的元素数量由参数决定。

序号参数描述
1rand返回 0 - 1 随机值
2randn返回一个样本具有标准正态分布
3randint返回随机的整数,位于半开区间[low,hight)size = 10 (3,3)
4random_integers(low[, high, size])返回随机的整数,位于闭区间
5random返回随机浮点数
arr = np.random.rand(9).reshape(3,3)
print(arr)

arr = np.random.rand(3,2,3)
print(arr)

arr = np.random.randn(9).reshape(3,3)
print(arr)

arr = np.random.randn(3,2,3)
print(arr)

arr = np.random.randint(1,9,size = (2,4))
print(arr)

arr = np.random.random_integers(1,9,size =(2,4))
print(arr)

arr = np.random.random((3,2,3))
print(arr)

arr = np.random.randn(3,2,3)
print(arr)

ndarray对象属性

shape

数组的维度。
这个数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。

a = np.array([[1,2,3],[4,5,6]])
print(a)  # [[1 2 3]
            #[4 5 6]]
print(a.shape)  # (2, 3)

调整数组大小
a = np.array([[1,2,3],[4,5,6]])
a.shape=(3,2)
print(a)

reshape 调整数组大小。

a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print(b)

ndim

数组轴(维度)的个数。

a = np.arange(24)
print(a)
print(a.ndim)
b = a.reshape(2,4,3)
print(b)
print(b.ndim)
print(b.shape)

itemsize

数组中每个元素的字节大小。

#数组的int8 一个字节
x = np.array([1,2,3,4,5], dtype = np.int8)
print(x.itemsize)
数组的float32 4个字节
x = np.array([1,2,3,4,5], dtype = np.float32)
print(x.itemsize)
size

数组元素的总个数,等于shape属性中元组元素的乘积。

arr = np.arange(18).reshape(2,3,3)
print(type(str(arr)))
print(arr.shape)
print(arr.size)
dtype

描述数组中元素类型的对象。

数据类型类型简写说明
int_默认整形
intc等价于long的整形
int8i1字节整形,1个字节,范围:[-128,127]
int16i2整形,2个字节,范围:[-32768,32767]
int32i3整形,4个字节,范围:[-2^31, 2^31-1]
int64i4整形,8个字节,范围:[-2^63, 2^63-1]
uint8u1无符号整形, 1个字节, 范围:[0,255]
uint16u2无符号整形, 2个字节, 范围:[0,65535]
uint32u3无符号整形, 1个字节, 范围:[0, 2^32-1]
uint64u4无符号整形, 1个字节, 范围:[0,2^64-1]
bool_以一个字节形成存储的布尔值(True或者False)
float_float64简写形式
float16f2半精度浮点型(2字节):1符号位+5位指数+10位的小数部分
float32f4或者f单精度浮点型(4字节):1符号位+8位指数+23位的小数部分
float64f8或者d双精度浮点型(8字节):1符号位+11位指数+52位的小数部分
complex_c16complex128的简写形式
complex64c8complex128的简写形式
complex128c16复数,由两个64位的浮点数来表示
objectOPython对象类型
String_S固定长度的字符串类型(每个字符1个字节),比如:要创建一个长度为8的字符串,应该使用S8
Unicode_U固定长度的unicode类型的字符串(每个字符占用字节数由平台决定),长度定义类似String_类型
import numpy as np
# 使用数组标量类型
dt = np.dtype(np.int32)
print(dt)

# int8,int16,int32,int64 可替换为等价的字符串 'i1','i2','i4',以及其他。
dt = np.dtype('i4')
print(dt)
  • 结构化数据类型
dt = np.dtype([('age',np.int8)])
print(dt)

#将结构化数据应用于ndarray对象
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)],dtype = dt)
print(a)


#访问age列内容
dt = np.dtype([('age','i1')])
a = np.array([(10,),(20,),(30,)],dtype = dt)
print(a['age'])


#结构化数据包含多个字段
student = np.dtype([('name','S20'),('age','i1'),('marks','f4')])
a = np.array([('joe',20,80),('susan',22,85),('tom',23,90),('fank',23,33)],dtype=student)
print(a)
print(a['name'])

每个数据类型都有一个类型代码,即简写方式!

布尔值符号整数无符号整数浮点复数浮点时间间隔日期时间Python 对象字节串Unicode原始数据(void)
biufcmMOS\aUV
©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页

打赏作者

sxau_zhangtao

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值