一、数组拆分:
矩阵输出:
import numpy as np
c = np.arange(1, 13).reshape(6, 2)
print(c)
1. vsplit沿着垂直轴分割
import numpy as np
c = np.arange(1, 13).reshape(6, 2)
print(np.vsplit(c, 3))
2. 水平拆分:numpy.hsplit
import numpy as np
c = np.arange(1, 13).reshape(6, 2)
# print(np.vsplit(c, 3))
d = c.T
np.hsplit(d, 3)
print(d)
3.numpy.dsplit(将数组拆分为多个子数组):
import numpy as np
a = np.array([[11, 12, 13], [14, 15, 16], [17, 18, 19]])
b = np.array([[21, 22, 23], [24, 25, 26], [27, 28, 29]])
e = np.dstack((a, b))
print(e)
两列单独输出后可以合二为一:
import numpy as np
a = np.array([[11, 12, 13], [14, 15, 16], [17, 18, 19]])
b = np.array([[21, 22, 23], [24, 25, 26], [27, 28, 29]])
e = np.dstack((a, b))
print(np.dsplit(e, 2))
二、numpy基本加减和取行操作:
python的广播机制:
import numpy as np
a = np.array([1, 1, 1, 1])
b = np.array([[1], [1], [1], [1]])
print(a + b)
numpy提取某行(列)或某几行(列)
1.取W的第一列(返回的是一维数组):
import numpy as np
W = np.array([[1, 1, 1], [2, 2, 2]])
print(W[:, 1])
2.取W第一行,返回一维数组:
import numpy as np
W = np.array([[1, 1, 1], [2, 2, 2]])
print(W[1])
3.用array[5,5]这样的一维数组直接可以把W矩阵的第1列替换(维度符合即可):
import numpy as np
W = np.array([[1, 1, 1], [2, 2, 2]])
W[:, 1] = np.array([5, 5])
print(W)
三、矩阵删除、插入、尾部添加操作(delete,insert,append)
delete删除指定的行列:
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)
# 删除第二行
import numpy as np
matrix = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
]
p2 = np.delete(matrix, 1, 1)
print('------p2------\n', p2)
# 删除第二行与第二列
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)
print('------q1------\n', q1)
# 在第二行插入指定矩阵
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)
# 在尾部添加指定行
数组抽取:
import numpy as np
a1 = np.random.choice(10, 4) # 从0~10中随机选择4个数组成一维数组
print(a1)
从给定list中随机选择4个数组成一维数组:
import numpy as np
# 从给定list中随机选择4个数组成一维数组
a2 = np.random.choice([0, 1, 2, 3, 4, 8, 7], 4)
print(a2)
上述均有重复,将replace设置为False,即可按要求没有重复的选取:
import numpy as np
# 上述均有重复,将replace设置为False,即可按要求没有重复的选取
a4 = np.random.choice([0, 1, 2, 3, 4, 5, 6], 5, replace=False)
print(a4)
给出选取概率p,注意p的维度和a的维度一致,并且p中概率和为1:
import numpy as np
# 给出选取概率p,注意p的维度和a的维度一致,并且p中概率和为1
a5 = np.random.choice(np.array([0, 1, 2, 3, 4, 5, 6]), 5, p=[0.02, 0.02, 0.01, 0.02, 0.02, 0.01, 0.9])
print(a5)
import numpy as np
a = np.array([[1, 1, 1], [2, 2, 2], [0, 3, 6]])
b1 = np.argmax(a) # 将数组a拉平,最大值索引为9(初始索引为0)
print(b1)
按列选取最大值的索引:
import numpy as np
a = np.array([[1, 1, 1], [2, 2, 2], [0, 3, 6]])
b2 = np.argmax(a, axis=0) # 按列选取最大值的索引
print(b2)
星号作用:
。
numpy.linspace(start, shop, num==50, endpoint=True, retstep=False, dtype=None)
在指定间隔start到stop内返回均匀间隔的数组。
返回num均匀分布的样本,在[start, stop],默认生成50个数据
endpoint, 如果是真,则一定包括stop,如果为False,一定不会有stop
retstep,显示步长信息
import numpy as np
y1 = np.linspace(-10.0, 10.0) # 默认生成50个数据
y2 = np.linspace(1, 10, 10) # 生成10个数据,包括首尾
y3 = np.linspace(1, 10, 10, endpoint=False) # 不包括尾部数据
y4 = np.linspace(1, 10, 6, retstep=True) # 将步长与结果的数组放入一个list
print(y1)
拉平操作:
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6], [1, 2, 3]])
x.flatten() # 拉平
print(x.flatten())
计算元素乘积:
import numpy as np
# 计算元素乘积
x = np.array([[1, 2, 3], [2, 3, 4]])
np.prod(x)
print(np.prod(x))
通过axis计算指定轴的乘积:
import numpy as np
x = np.array([[1, 2, 3], [2, 3, 4]])
print(np.prod(x, axis=1))
把矩阵大于或小于N的元素置M:
import numpy as np
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
y1 = np.maximum(0, x) # 把小于0的元素置0,比改变x的值
print(y1)
import numpy as np
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
y2 = np.minimum(0, x) # 把大于0的元素置0,不改变x的值
print(y2)
import numpy as np
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
x1 = x.copy()
x1[x1 < 0] = 0 # 把小于0的元素置0,改变x1的值
print(x1)
import numpy as np
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
x2 = x.copy()
x2[x2 > 0] = 0 # 把大于0的元素置0,改变x2的值
print(x2)
numpy中的矩阵copy问题:
import numpy as np
x = np.array([[1, 2, 3], [-3, 2, 4], [5, -2, 9]])
x1 = x.copy() # copy(),开辟新地址
x1[x1 > 0] = 0
print(x1)
未完待续......