赞
踩
安装 numpy:(第三方库)
pip install numpy
示例:
import numpy as np
a = np.array([1, 2, 3])
print(a) # [1 2 3]
# 返回值类型 ndarray
print(type(a)) # <class 'numpy.ndarray'>
ndarray 主要有以下特点
str > float > int
自动转换)import numpy as np # 示例:一维数组 a = np.array([1, 2, 3]) # 元素索引:从 0 开始 print(f'下标为 0 的元素:{a[0]}') # 1 print(f'下标为 1 的元素:{a[1]}') # 2 print(f'下标为 2 的元素:{a[2]}') # 3 # 元素类型:完全一样 print(f'下标为 0 的元素类型:{a[0].dtype}') # int32 print(f'下标为 1 的元素类型:{a[1].dtype}') # int32 print(f'下标为 2 的元素类型:{a[2].dtype}') # int32 # 元素内存空间:完全一样 print(f'下标为 0 的元素内存空间:{a[0].itemsize}') # 4 print(f'下标为 1 的元素内存空间:{a[1].itemsize}') # 4 print(f'下标为 2 的元素内存空间:{a[2].itemsize}') # 4
元素类型转换示例:
import numpy as np
# 示例:一维数组
# 1 和 2 是 int, 3.5 是 float
a = np.array([1, 2, 3.5])
print(a) # [1. 2. 3.5]
print(f'下标为 0 的元素类型:{a[0].dtype}') # float64
print(f'下标为 1 的元素类型:{a[1].dtype}') # float64
print(f'下标为 2 的元素类型:{a[2].dtype}') # float64
语法格式:
numpy.array(object, # 数组的输入数据。可以是列表、元组、数组等
dtype=None, # 生成数组的数据类型
copy=True, # 是否复制
order=None, # 是否排序(内存,C:按行方向,F:按列方向,A:任意方向,k:默认数据输入时方向)
subok=False, # 是否返回子类数组
ndmin=0 # 生成数组的维度
)
# 重点关注:dtype、ndmin
# copy、order、subok 了解即可,与内存存储相关,一般不使用
import numpy as np # 创建一维数组 a = np.array([1, 2, 3]) print(a) # 创建二维数组 b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(b) # 创建结构化数据的数组 student = np.dtype([('name', 'S10'), ('age', 'i1'), ('sex', 'f4')]) c = np.array([('张三', 21, '女'), ('李四', 18, '男')]) print(c) # [['张三' '21' '女'] # ['李四' '18' '男']] # 其它内置创建数组的函数,此处仅举例部分 # 示例:创建给定数组范围的数组:arange() d = np.arange(start=1, # 起点(默认 0) stop=5, # 终点(不包含) step=1, # 步长(默认 1) dtype=np.int_ # 返回数据的类类型(自动判断) ) print(d) # [1 2 3 4]
[start: end: step]
import numpy as np # 示例1:一维数组 a = np.array([1, 2, 3, 4, 5]) # 裁切 索引1 到 索引4 的元素,步长为 1 print(a[1:4:1]) # [2 3 4] # 裁切 索引1 到 结尾的元素,步长为 2 print(a[1::2]) # [2 4] # 示例2:二维数组 b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 裁切 横索引1、纵索引1:3 的元素 print(b[1, 1:3]) # [5 6]
import numpy as np # 示例1:连接一维数组 a1 = np.array([1, 2, 3]) a2 = np.array([4, 5, 6]) a = np.concatenate((a1, a2)) print(a) # [1 2 3 4 5 6] # 示例2:沿着对称轴(axis=1)连接二维数组 b1 = np.array([[1, 2], [3, 4]]) b2 = np.array([[5, 6], [7, 8]]) print(np.concatenate((b1, b2), axis=1)) # [[1 2 5 6] # [3 4 7 8]]
import numpy as np # 示例1:一维数组 a = np.array([1, 2, 3, 4, 5, 6]) new_a = np.array_split(a, 3) print(new_a) # [array([1, 2]), array([3, 4]), array([5, 6])] # 示例2:二维数组 b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) new_b = np.array_split(b, 2) print(new_b) # [array([[1, 2, 3], # [4, 5, 6]]), array([[7, 8, 9]])] print(np.array_split(b, 2, axis=1)) # 沿对称轴拆分 # [array([[1, 2], # [4, 5], # [7, 8]]), array([[3], # [6], # [9]])]
import numpy as np
a = np.arange(12)
print(a)
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
# 示例:由原 一维数组 变为 二维数组(3行4列)
b = a.reshape((3, 4))
print(b)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
import numpy as np
# 一维数组
a = np.array([1, 2, 3])
print(f'获取下标索引为 0 的元素:{a[0]}') # 1
print(f'获取下标索引为 1 的元素:{a[1]}') # 2
print(f'获取下标索引为 2 的元素:{a[2]}') # 4
# 二维数组
b = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(f'获取下标索引为 0,0 的元素:{b[0][0]}') # 1。写法1
print(f'获取下标索引为 1,0 的元素:{b[1, 0]}') # 4。写法2
import numpy as np # 示例1:一维数组 a = np.array([1, 2, 3, 4, 5, 6]) for x in np.nditer(a): print(x, end=", ") # 1, 2, 3, 4, 5, 6, print() # 示例2:二维数组 b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) for x in np.nditer(b): print(x, end=", ") # 1, 2, 3, 4, 5, 6, 7, 8, 9,
import numpy as np # 示例1:一维数组 a = np.array([1, 2, 3, 4, 5, 6]) for idx, x in np.ndenumerate(a): print(idx, x, end=", ") # (0,) 1, (1,) 2, (2,) 3, (3,) 4, (4,) 5, (5,) 6, print() # 示例2:二维数组 b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) for idx, x in np.ndenumerate(b): print(idx, x, end=", ") # (0, 0) 1, (0, 1) 2, (0, 2) 3, # (1, 0) 4, (1, 1) 5, (1, 2) 6, # (2, 0) 7, (2, 1) 8, (2, 2) 9,
import numpy as np
a = np.array([0, 1, 2, 3, 3, 5])
x = np.where(a == 3)
print(f'出现元素 3 的索引:{x}') # (array([3, 4], dtype=int32),)
print(f'元素值为偶数的索引;{np.where(a%2 == 0)}') # (array([0, 2], dtype=int32),)
import numpy as np
a = np.array([0, 1, 2, 4, 3, 5])
b = np.sort(a) # b 是 a 的副本,不影响 a 的元素
print(b) # [0 1 2 3 4 5]
import numpy as np
a = np.array([0, 1, 2, 4, 3, 5])
# 过滤器:仅保留 >= 3 的元素
filter_a = a >= 3
new_a = a[filter_a]
print(new_a) # [4 3 5]
import numpy as np a = np.arange(12).reshape(3, 4) print(a) # [[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] b = np.transpose(a) print(b) # [[ 0 4 8] # [ 1 5 9] # [ 2 6 10] # [ 3 7 11]] # 利用属性,效果同上 c = a.T print(c)
类型 | 字符代码 | 描述 |
---|---|---|
bool_ | b | 布尔型(True、False) |
int_ | i | 整数(默认,类似 C 语言中的 long、int32 或 int64) |
intc | 与 C 的 int 类型一样,一般是 int32 或 int64 | |
intp | 用于索引的整数(类似 C 语言中的 ssize_t,一般是 int32 或 int64) | |
int8 | i1 | 字节数( − 2 7 -2^7 −27 to 2 7 − 1 2^7-1 27−1) |
int16 | i2 | 字节数( − 2 15 -2^{15} −215 to 2 15 − 1 2^{15}-1 215−1) |
int32 | i4 | 字节数( − 2 31 -2^{31} −231 to 2 31 − 1 2^{31}-1 231−1) |
int64 | i8 | 字节数( − 2 63 -2^{63} −263 to 2 63 − 1 2^{63}-1 263−1) |
uint8 | u1 | 无符号整数( 0 0 0 to 2 8 − 1 2^{8}-1 28−1) |
uint16 | u2 | 无符号整数( 0 0 0 to 2 16 − 1 2^{16}-1 216−1) |
uint32 | u4 | 无符号整数( 0 0 0 to 2 32 − 1 2^{32}-1 232−1) |
uint64 | u8 | 无符号整数( 0 0 0 to 2 64 − 1 2^{64}-1 264−1) |
float_ | float64 类型的简写 | |
float16 | f2 | 半精度浮点数。1个符号位,5个指数位,10个尾数位 |
float32 | f4 | 单精度浮点数。1个符号位,8个指数位,23个尾数位 |
float64 | f8 | 双精度浮点数。1个符号位,11个指数位,52个尾数位 |
complex_ | complex 128 类型的简写 | |
complex64 | c8 | 复数,表示双 32 位浮点数 |
complex128 | c16 | 复数,表示双 64 位浮点数 |
string_ | S | 固定长度字符串,如:S10,长度为 10 |
object | O | Python 对象类型 |
import numpy as np
a = np.array([1, 2, 3])
print(a) # [1 2 3]
print(f'维度数量 ndim={a.ndim}')
print(f'元素总数 size={a.size}')
print(f'元素形状 shape={a.shape}') # 行 * 列 = 总数
print(f'元素类型 dtype={a.dtype}')
print(f'元素大小 itemsize={a.itemsize}') # 单位:字节
print(f'内存标志 flags={a.flags}')
print(f'元素实部 real={a.real}')
print(f'元素虚部 imag={a.imag}')
print(f'元素缓冲 data={a.data}')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。