一、数组拆分:
矩阵输出:
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)

未完待续......
本文详细介绍了numpy库中的数组拆分技巧(vsplit、hsplit、dsplit),展示了广播机制、数组加减取行操作,以及矩阵删除、插入、尾部添加的方法。此外,还涵盖了数组抽取、概率选取、元素运算、矩阵变换和数据处理的实例。
9669

被折叠的 条评论
为什么被折叠?



