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 测试一个数组的值是否存在另一个数组

线性代数

posted @ 2022-12-22 17:05  braveman1021  阅读(37)  评论(0)    收藏  举报