一、numpy概述
官方文档: https://www.numpy.org
官方中文文档: https://www.numpy.org.cn/
二、numpy基础
用np.ndarray类的对象表示n维数组
import numpy as np
ary = np.array([1, 2, 3, 4, 5, 6])
print(type(ary))
元数据(metadata)
存储对目标数组的描述信息,如:dim count、dimensions、dtype、data等。
实际数据
完整的数组数据
将实际数据与元数据分开存放,一方面提高了内存空间的使用效率,另一方面减少对实际数据的访问频率,提高性能。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9MMpxi5n-1638019422028)(./img/ndarray_struct.png)]
np.array(任何可被解释为Numpy数组的逻辑结构)
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
print(a)
np.arange(起始值(0),终止值,步长(1))
import numpy as np
a = np.arange(0, 5, 1)
print(a)
b = np.arange(0, 10, 2)
print(b)
np.zeros(数组元素个数, dtype=’类型’)
import numpy as np
a = np.zeros(10)
print(a)
np.ones(数组元素个数, dtype=’类型’)
import numpy as np
a = np.ones(10)
print(a)
np.ones_like(类数组)
np.zeros_like(类数组)
import numpy as np
a = np.arange(10).reshape(2, 5)
print(a)
b = np.ones_like(a)
print(b)
c = np.zeros_like(a)
print(c)
数组的维度:np.ndarray.shape
import numpy as np
ary = np.array([1, 2, 3, 4, 5, 6])
print(type(ary), ary, ary.shape)
ary = np.array([
[1,2,3,4],
[5,6,7,8]
])
print(type(ary), ary, ary.shape)
元素的类型:np.ndarray.dtype
import numpy as np
ary = np.array([1, 2, 3, 4, 5, 6])
print(type(ary), ary, ary.dtype)
b = ary.astype(float)
print(type(b), b, b.dtype)
c = ary.astype(str)
print(type(c), c, c.dtype)
数组元素的个数:np.ndarray.size
import numpy as np
ary = np.array([
[1,2,3,4],
[5,6,7,8]
])
print(ary.shape, ary.size, len(ary))
Numpy的内部基本数据类型
类型名类型表示符类型代码布尔型bool_?有符号整数型int8(-128~127)/int16/int32/int64i1/i2/i4/i8无符号整数型uint8(0~255)/uint16/uint32/uint64u1/u2/u4/u8浮点型float16/float32/float64f2/f4/f8复数型complex64/complex128C8/c16/c32字节串型bytes_(兼容:Python字节)S#字符串型str_(兼容:Python unicode)4字节’U#’日期时间np.datetime64M8[Y] M8[M]
M8[D] M8[h]
M8[m] M8[s]
自定义复合类型
若希望ndarray中存储对象类型,numpy建议使用元组存储对象的属性字段值,然后把元组添加到ndarray中,ndarray提供了语法方便的处理这些数据。
import numpy as np
data=[
('zs', [90, 80, 85], 15),
('ls', [92, 81, 83], 16),
('ww', [95, 85, 95], 15)
]
第一种设置dtype的方式
a = np.array(data, dtype='U3, 3int32, int32')
print(a)
print(a[0]['f0'], ":", a[1]['f1'])
第二种设置dtype的方式
b = np.array(data, dtype=[
('name', 'str_', 2),
('scores', 'int32', 3),
('ages', 'int32', 1)
])
print(b[0]['name'], ":", b[0]['scores'])
第三种设置dtype的方式
c = np.array(data, dtype={
'names': ['name', 'scores', 'ages'],
'formats': ['U3', '3int32', 'int32']
})
print(c[0]['name'], ":", c[0]['scores'], ":", c.itemsize)
第四种设置dtype的方式
d = np.array(data, dtype={
'names': ('U3', 0),
'scores': ('3int32', 16),
'ages': ('int32', 28)
})
print(d[0]['names'], d[0]['scores'], d.itemsize)
Numpy的日期时间类型
类型名类型表示符类型代码日期时间np.datetime64M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s]
测试日期类型数组
f = np.array(['2011', '2012-01-01',
'2013-01-01 01:01:01','2011-02-01'])
f = f.astype('M8[D]')
f = f.astype('int32')
print(f[3]-f[0])
复数类型的矩阵
a = np.array([[1 + 1j, 2 + 4j, 3 + 7j],
[4 + 2j, 5 + 5j, 6 + 8j],
[7 + 3j, 8 + 6j, 9 + 9j]])
print(a.T)
for x in a.flat:
print(x.imag)
字节序前缀,用于多字节整数和字符串:
/[=]分别表示小端/大端/硬件字节序。
类型字符码格式
3i4释义3i4大端字节序,3个元素的一维数组,每个元素都是整型,每个整型元素占4个字节。
Original: https://blog.csdn.net/weixin_40809507/article/details/121583860
Author: 不学无术-倪
Title: numpy教程
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760577/
转载文章受原作者版权保护。转载请注明原作者出处!