一、索引

1.1numpy数组的转置

A=np.arange(3,15).reshape(3,4)
print(A)

print(A[2][0])
print(A[2,1])
print(A[2,:])#用冒号代替这一行所有的数  第二行的所有的数
print(A[:,1])#第一列的所有数
# 第一行的从1到3的值
print(A[1,1:3])

结果:

1.2矩阵的转置以及将矩阵转化为array

A=np.arange(3,15).reshape(3,4)
print(A)
for col in A.T:
    #迭代a的列就是 迭代A的转置的行
    print(col)

a=A
print(a.flatten())#返回被改变的array
for item in a.flat:#a.flat 表示的是一个迭代期
    print(item)

结果:

二、矩阵的合并

 2.1基本上用 concatenate函数对矩阵进行合并

# array的合并
a=np.array([1,1,1])
b=np.array([2,2,2])

c=np.vstack((a,b))#纵向叠加成矩阵
print("纵向叠加:")
print(c)
print("为了之后的合并,我们对array进行reshape")
a=a.reshape(3,1)
print("reshape a:")
print(a)
b=b.reshape(3,1)
print("reshape b:")
print(b)
print("左右合并:")
d=np.hstack((a,b))#左右合并成一个矩阵 如果是序列的话 就是序列+序列=序列
print(d)
#
# # 想把a变成一个竖向的序列
# print(a.reshape(3,1))

# 多个arrayd 纵向或者横向的合并
print("多个矩阵或者array的合并")
c=np.concatenate((a,b,b,a),axis=0)#0是在上下的维度进行合并 按列合并
print("在上下维度合并")
print(c)
c=np.concatenate((a,b,b,a),axis=1)#0是在左右的维度进行合并 按行合并
print("在左右维度合并")
print(c)

结果:

纵向叠加:
[[1 1 1]
 [2 2 2]]
为了之后的合并,我们对array进行reshape
reshape a:
[[1]
 [1]
 [1]]
reshape b:
[[2]
 [2]
 [2]]
左右合并:
[[1 2]
 [1 2]
 [1 2]]
多个矩阵或者array的合并
在上下维度合并
[[1]
 [1]
 [1]
 [2]
 [2]
 [2]
 [2]
 [2]
 [2]
 [1]
 [1]
 [1]]
在左右维度合并
[[1 2 2 1]
 [1 2 2 1]
 [1 2 2 1]]

Process finished with exit code 0

三、矩阵的分割

3.1等量的分割

a=np.array([1,1,1])
b=np.array([2,2,2])
# array的分割
a=np.arange(12).reshape(3,4)
print(a)

print(np.split(a,2,axis=1))#要切割的矩阵 分割为几块 分割为行还是列   1表示分割为行(这里把行分为2列)
print(np.split(a,3,axis=0))#按列分为三块 把每一列分为三块 这边最好还是注意下axis 的值和对应的意思

结果:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

Process finished with exit code 0

3.2不等量的分割

a=np.arange(12).reshape(3,4)
print(a)
# 如何进行不等量的分割
a=np.array_split(a,3,axis=1) #这里是把每行元素分成了三份
print(a)

结果:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]])]

Process finished with exit code 0

3.3分割的其它办法

# array的分割
a=np.arange(12).reshape(3,4)
print(a)

# 分割的其它办法
print(np.vsplit(a,3))#v代表垂直分割
print(np.hsplit(a,2))#h代表水平分割

结果:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]

四、array的相关赋值

其实就是就是如果想不相关,但是值是一样,那就用.copy(),这就叫深度复制

# array的相关赋值
a=np.arange(4)
print(a)
b=a#b就是指向ad 引用
c=a
d=b
a[0]=11
print(a)
print(b)
print(b is a)#可以看下是不是同一个a
print(a is d)#发现是同一个维度的
d[1:3]=[22,33]
print(a)#你改了不管其中那一个 都会变的
# 如果我们不想关联起来
b=a.copy()#deep copy 赋值但没有关联
a[3]=44
print(a)
print(b)

结果:

[0 1 2 3]
[11  1  2  3]
[11  1  2  3]
True
True
[11 22 33  3]
[11 22 33 44]
[11 22 33  3]