numpy教程

一、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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球