numpy基本加减和取行操作
import numpy as np
a = np.array([1, 1, 1, 1])
b = np.array([[1], [1], [1], [1]])
print(a + b)
print("#########")
c = np.array([1, 1, 1, 1])
print(c+b)
# array([[2,2,2,2],
# [2,2,2,2],
# [2,2,2,2],
# [2,2,2,2]])
print("#########")
W = np.array([[1, 1, 1],
[2, 2, 2]])
print(W[:, 1])
print("#########")
print(W[1])
print("#########")
W[:, 1] = np.array([5, 5])
print(W)
运行结果
矩阵删除、插入、尾部添加操作(delete,insert,append)
import numpy as np
matrix = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
]
p1 = np.delete(matrix, 1, 0)
print('>>>p1>>>\n', p1)
p2 = np.delete(matrix, 1, 1)
print('>>>>p2>>>>\n', p2)
p3 = np.delete(matrix, 1)
print('>>>>p3>>>>\n', p3)
p4 = np.delete(matrix, [0, 1], 1)
print('>>>>p4>>>>\n', p4)
运行截图
insert()函数
import numpy as np
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
]
q1 = np.insert(matrix, 1, [1, 1, 1, 1], 0) # 第0维度(行)第1行添加[1,1,1,1]
print('>>>>q1>>>>\n', q1)
q2 = np.insert(matrix, 0, [1, 1, 1], 1) # 第1维度(列)第0列添加1,1,1
print('>>>>q2>>>>\n', q2)
q3 = np.insert(matrix, 3, [1, 1, 1, 1], 0) # 第0维度(行)第3行添加[1,1,1,1]
print('>>>>q3>>>>\n', q3)
运行截图
append()函数
import numpy as np
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
]
m1 = np.append(matrix, [[1, 1, 1, 1]], axis=0)
print('>>>>m1>>>>\n', m1)
m2 = np.append(matrix, [[1], [1], [1]], axis=1)
print('>>>>m2>>>>\n', m2)
m3 = np.append(matrix, [1, 1, 1, 1])
print('>>>>m3>>>>\n', m3)
运行截图
np.random.choice(a, size, replace, p)
import numpy as np
a1 = np.random.choice(7, 5) # 从0~7中随机选择5个数组成一维数组
print(a1)
a2 = np.random.choice([0, 1, 2, 3, 4, 5, 6], 5) # 从给定list中随机选择5个数组成一维数组
print(a2)
a3 = np.random.choice(np.array([0, 1, 2, 3, 4, 5, 6]), 5) # 将list换成array数组依然可以运行,效果一致
print(a3)
a4 = np.random.choice([0, 1, 2, 3, 4, 5, 6], 5, replace=False) # 上述均有重复,将replace设置为False,即可按要求没有重复
print(a4)
a5 = np.random.choice(np.array([0, 1, 2, 3, 4, 5, 6]), 5, p=[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.4])
# 给出选取概率p,注意p的维度和a的维度一致,并且p中概率和为1
print(a5)
运行截图
np.argmax(a, axis=None, out=None)
import numpy as np
a = np.array([[1, 1, 1], [2, 2, 2], [0, 3, 6]])
print(a)
b1 = np.argmax(a)
print(b1)
b2 = np.argmax(a, axis=0) # 按列选取最大值的索引
print(b2)
b3 = np.argmax(a, axis=1) # 按行选取最大值的索引
print(b3)
运行截图
星号(*)的作用
import numpy as np
y1 = np.linspace(-10.0, 10.0) # 默认生成50个数据
print(y1)
y2 = np.linspace(1, 10, 10) # 生成10个数据,包括首尾
print(y2)
y3 = np.linspace(1, 10, 10, endpoint=False) # 不包括尾部数据
print(y3)
y4 = np.linspace(1, 10, 6, retstep=True) # 将步长与结果的数组放入一个list、
print(y4)
运行截图
拉平操作 ravel()和faltten()及reshape(1,-1)的区别联系(补充[None,:]操作)
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6], [1, 2, 3]])
print(x.flatten())
print(x.ravel())
print(x.ravel('F'))
print(x.flatten('F'))
x.flatten()[1] = 20
print(x)
x.ravel()[1] = 20
print(x)
print(x.reshape(1, -1))
x = np.array([1, 2, 3, 6, 7, 8]) # 注意操作的是数组,即原x是数组
print(x[None, :]) # 转成行向量(二维矩阵)
print(x[:, None])
print(x[np.newaxis, :])
运行截图
np.prod() 计算元素乘积
import numpy as np
x = np.array([[1, 2, 3], [2, 3, 4]])
print(np.prod(x))
print(np.prod(x, axis=1))
print(np.prod(x, axis=0))
运行截图
把矩阵大于或小于N的元素置M
import numpy as np
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
print(x)
y1 = np.maximum(0, x)
print(y1)
y2 = np.minimum(0, x)
print(y2)
x1 = x.copy()
print(x1)
x1[x1 < 0] = 0
print(x1)
x2 = x.copy()
x2[x2 > 0] = 0
print(x2)
运行截图
numpy中的矩阵copy
import numpy as np
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
print(x)
x1 = x.copy()
x1[x1 > 0] = 0
print(x1)
print(x)
x2 = x
x2[x2 > 0] = 0
print(x2)
print(x)
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
x3 = x[2] # 取x的第3行
print(x3)
x3[2] = 100
print(x)
运行截图
np.zeros_like()构造全零矩阵,无需指定大小
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.zeros_like(x) # 生成一个和x大小相同的全零矩阵
print(y)
运行截图
产生随机浮点数
import numpy as np
n = np.random.rand(3,4)
print(n)
运行截图
np.random.randn() 生成正态分布矩阵
import numpy as np
x = np.random.randn(2, 3)
print(x)
y = np.multiply(0.1, np.random.randn(2, 3)) + 0.5
print(y)
运行截图
np.randm.randint() 生成离散均匀分布的整数值组成的矩阵
import numpy as np
z = np.random.randint(2, 9, (2, 3))
print(z)
m = np.random.randint(9, size=(2, 3))
print(m)
x = 'You are right'
print(type(x))
x = [1, 2, 3]
print(type(x))
# python 断言 assert
assert type(x) == str, 'x is not str'
运行截图
np.pad()函数进行padding操作
import numpy as np
A = np.arange(95, 99).reshape(2, 2)
print(A)
B = np.pad(A, ((3, 2), (2, 3)), 'constant', constant_values=(0, 0))
print(B)
b = np.array([[[1, 2], [3, 4]], [[3, 4], [7, 8]], [[4, 5], [1, 2]]])
print(b)
print(np.pad(b, ((0, 0), (1, 1), (1, 1)), 'constant', constant_values=0))
运行截图
numpy.empty() 创建指定形状和数据类型且未初始化的数组
import numpy as np
x = np.empty([3,2], dtype = int)
print (x)
运行截图
判断两个矩阵元素完全相等&&存在相等
import numpy as np
a = np.array([[1, 2, 3], [1, 2, 3]])
b = np.array([[1, 2, 3], [1, 2, 3]])
c = np.array([[1, 4, 3], [1, 2, 3]])
print((a == b).all())
print((a == c).all())
print((a == c).any())
运行截图
np.full 用于形成元素全为某元素的矩阵
import numpy as np
c = np.array([[1, 2], [3, 4]])
print(c.astype(np.float32))
运行截图
np.meshgrid() 快速生成网格
import numpy as np
x = np.array([1, 3, 5])
y = np.array([4, 6])
XX, YY = np.meshgrid(x, y)
print(XX)
print(YY)
运行截图
np.hstack() 和 np.vstack() 用于堆叠矩阵
import numpy as np
x = np.array([[3, 4, 5], [1, 3, 4]])
y = np.array([[1, 1, 1], [2, 2, 2]])
print(np.hstack((x, y))) # 水平堆叠
print(np.vstack((x, y)))
运行截图
numpy 取整
import numpy as np
a = np.array([0.125,0.568,5.688])
print(np.round(a))
print(np.round(a,decimals=2))
print(np.floor(a))
print(np.ceil(a))
运行截图
np.newaxis 在特定位置增加一个维度
import numpy as np
c = np.array([1, 2, 5, 4])
print(c[:, np.newaxis])
print(c[np.newaxis, :])
运行截图
python 广播机制
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
a = np.array([[1, 2, 3, 6], [4, 5, 6, 6]])
a1 = a.reshape((1, 2, 4))
print(a1)
b = np.array([[3, 4, 5, 6], [1, 2, 3, 4], [4, 5, 5, 5]])
print(b)
b1 = b.reshape((1, 3, 4)).transpose((1, 0, 2))
print(b1)
print(a1)
print(a1 + b1)
c = np.array([[[1, 2, 5], [3, 4, 6]], [[4, 5, 6], [7, 8, 9]]])
print(c)
print(c.transpose(1, 0, 2))
print(c.transpose(1, 2, 0))
运行结果
[[[1 2 3 6]
[4 5 6 6]]]
[[3 4 5 6]
[1 2 3 4]
[4 5 5 5]]
[[[3 4 5 6]]
[[1 2 3 4]]
[[4 5 5 5]]]
[[[1 2 3 6]
[4 5 6 6]]]
[[[ 4 6 8 12]
[ 7 9 11 12]]
[[ 2 4 6 10]
[ 5 7 9 10]]
[[ 5 7 8 11]
[ 8 10 11 11]]]
[[[1 2 5]
[3 4 6]]
[[4 5 6]
[7 8 9]]]
[[[1 2 5]
[4 5 6]]
[[3 4 6]
[7 8 9]]]
[[[1 4]
[2 5]
[5 6]]
[[3 7]
[4 8]
[6 9]]]
numpy 中双冒号的用法
import numpy as np
a = np.array([2, 2, 3, 4, 5, 5, 6, 7])
print(a[0:7:2])
print(a[0::2])
print(a[::-1])
运行截图
python 的内置函数 slice
import numpy as np
a = np.array([2,2,3,4,5,5,6,7])
s = slice(0,7,2)
print(a[s])
运行截图