numpy
创建np对象
import numpy as np
arr = np.array(['a','b','c','d','e'])
print(arr)
print(type(arr))
np 中的ndarray
n维数组对象
每个数组都有⼀个shape(⼀个表示
各维度⼤⼩的元组)和⼀个dtype(⼀个⽤于说明数组数据类型
的对象)
np数组运算
- 大小相同的的数组之间任何运算都会应用到元素级
- 比较会生成bool数组
np数组索引
arr = np.array(['a','b','c','d','e'])
arr1= np.array([[1,2],[3,4]])
print(arr)
print(arr1[0,1])
print(type(arr))
布尔型索引
数组切割

- 行:列 先切0/行 后切 1列
- 对切片的赋值操作也会扩散到整个选区
[start🔚step] 包括开始索引,不包括结束索引
切割2-d数组
print(arr[1, 1:4])
数据类型
np中的数据类型
- i - 整数
- b - 布尔
- u - 无符号整数
- f - 浮点
- c - 复合浮点数
- m - timedelta
- M - datetime
- O - 对象
- S - 字符串
- U - unicode 字符串
- V - 固定的其他类型的内存块 ( void )
设置数组类型
array() 的 dtype 参数
装换已有数组的数据类型
arr = np.array([1.1, 2.1, 3.1])
newarr = arr.astype('i')
或者
arr.astype(np.float64)
副本vs视图
副本拥有数据,修改不影响原始数据;视图相反
副本
copy()
视图
view()
每个 NumPy 数组都有一个属性 base,如果该数组拥有数据,则这个 base 属性返回 None。
数组形状
NumPy 数组有一个名为 shape 的属性,该属性返回一个元组,每个索引具有相应元素的数量
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr.shape)
(2,4) 二维数组,每个维有4个元素
数组重塑
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
将以下具有 12 个元素的 1-D 数组转换为 2-D 数组。
最外面的维度将有 4 个数组,每个数组包含 3 个元素:
展平数组
reshape(-1)
数组迭代
一位数组
arr = np.array([1, 2, 3])
for x in arr:
print(x)
二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
print(x)
nditer()
随便维度的函数都可以迭代
for x in np.nditer(arr)
在迭代时更改元素的数据类型
NumPy 不会就地更改元素的数据类型(元素位于数组中),因此它需要一些其他空间来执行此操作,该额外空间称为 buffer,为了在 nditer() 中启用它,我们传参 flags=['buffered']
arr = np.array([1, 2, 3])
for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
以不同不长迭代
数组连接
concatenate() 函数
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print(arr)
每一个数组为一行
堆栈函数连接数组
stack
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr = np.stack((arr1, arr2), axis=1)

print(arr)
数组拆分
array_split(arr,n) n:拆分为几分
数组搜素
where(arr == 1) 返回 1 出现的索引
搜素排序
searchsorted()方法 在有序序列中插入值 不大于下一个值(设置side=right 该方法从右边开始搜索,并返回第一个索引,其中数字 7 不再小于下一个值。)
插入多个值
arr = np.array([1, 3, 5, 7])
x = np.searchsorted(arr, [2, 4, 6])
print(x)
数组排序
sort
数组过滤
从现有数组中取出一些元素并从中创建新数组称为过滤(filtering)。
在 NumPy 中,我们使用布尔索引列表来过滤数组。
布尔索引列表是与数组中的索引相对应的布尔值列表。
如果索引处的值为 True,则该元素包含在过滤后的数组中;如果索引处的值为 False,则该元素将从过滤后的数
生成随机数
np提供 random 模块处理随机数
random.randint(100) 生成一个0-100的随机数
生成随机数组
x=random.randint(100, size=(5)) #一维数组 一行5个
x=random.randint(100, size=(3,5)) #,二维数组 一共3行 一行5个
从数组中生成随机数
x = random.choice([3, 5, 7, 9])
也可以指定size,指定生成数组的大小
生成浮点数
x = random.rand() 生成0-1的随机浮点数
ufunc
一元

二元

方法
arange
np_arr=np.arange(10)
print(np_arr)
#输出 1-4
np_arr2 = np.arange(1,5)
print(np_arr2)
#步长为3
np_arr3 = np.arange(0,10,3)
print(np_arr3)

random
#1.生成指定维度的[0,1)之间的随机数
a = np.random.rand(4,3)
print(a)
#2. np.random.random 等同于rand
#3。 生成随机数,服从正态分布
b = np.random.randn(2,4)
print(b)
#4.np.random.randint(low,high,size=none,dtype=‘I’)
#返回[low,high) 的随机整数,数量为size
c = np.random.randint(1,9,5)
print(c)
#5. np.random.random_integers(low,high = None,size = None)
# –>返回范围为[low,high] 闭区间 随机整数
d = np.random.random(size = (2,2))
print(d)
#6. np.random.choice(a, size = None, replace = True, p = None)
# --> 从给定数组a中随机选择,p可以指定a中每个元素被选择的概率,
# 当replace = False时,返回的数中不可以有重复的
list = ["未中奖","差一点","中奖"]
e = np.random.choice(list,p=[0.5,0.3,0.2])
print(e)
#7.random.seed

数学和统计方法

布尔型数组方法
- sum() 对布尔型数组中的true值求和
- any() 有true就返回true
- all() 都为true返回true
排序
- sort()
唯一化
- unique() 每个值只返回一次
- inn1d 测试一个数组的值是否存在另一个数组

线性代数

浙公网安备 33010602011771号