numpy.1
import numpy as np
a = np.arange(4)
print(a)
#生成的是一个从0开始的4个值的数列
#[0 1 2 3]
a = np.arange(4).reshape((2,2))
print(a)
print(a.shape)
#判断矩阵的样式(2, 2)代表2行2列
#生成一个2行2列的矩阵
#[[0 1]
# [2 3]]
a = np.arange(4).reshape((2,2))
print(a)
print(np.sum(a,axis = 0))#axis = 0 代表按列相加 axis=1代表按行
'''[[0 1]
[2 3]]'''
#[2 4] 返回一个array
print(np.max(a))#找到其中最大的值
print(np.min(a))#找到最小的值
print(np.max(a,axis = 0))#按列找出每一列的最大值
print(np.min(a,axis = 0))#同上
b = np.arange(12).reshape((3,4))
print(b)
print(np.argmax(b,axis = 1))#[3 3 3] 按照行将每一行的最大的值的位置返回一个数列
print(b.mean())#算出所有值的 平均值
print(np.cumsum(b))
#[ 0 1 3 6 10 15 21 28 36 45 55 66]
#将每一个值递加 并返回
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
d = np.random.random((2,3)) * 10 - 3
#可以看到随机生成的一个2行3列的矩阵并且对矩阵的运算是对每一个元素的计算
print(d)
print(d.shape)#(2, 3)
print(np.transpose(d)#对矩阵的转置 transpose
print(d.T)#对矩阵的转置
'''
[[ 3.79442884 2.65870034 2.96206461]
[-1.91460778 1.11432605 2.06610598]]
'''
'''
[[-0.27988317 -2.06762975 -1.91392339]
[-1.44516069 -1.55149608 6.53402984]]
(2, 3)
[[-0.27988317 -1.44516069]
[-2.06762975 -1.55149608]
[-1.91392339 6.53402984]]
'''
d = np.arange(12).reshape((3,4))
a = np.arange(4).reshape((4,1))
print(d)
print(a)
print(d.dot(a))#矩阵的乘法d 在前
print(np.mean(d,axis = 0))
print(np.mean(d,axis = 1))
#[ 4. 5. 6. 7.]按照列来求平均值返回4列的平均值
#[ 1.5 5.5 9.5]按照行来求返回3行
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[0]
[1]
[2]
[3]]
[[14]
[38]
[62]]
'''
A = np.arange(4,14).reshape(2,5)
print(A)
print(A[1])#按行来取出数据
print(A[1,1:3])#取出矩阵中的更加具体的一些值
print(A[0:,1:3])#从矩阵中取出矩阵
'''
[[ 5 6]
[10 11]]
'''
print(A.flatten())
'''
[[ 4 5 6 7 8]
[ 9 10 11 12 13]]'''
[ 9 10 11 12 13]
[10 11]
[ 4 5 6 7 8 9 10 11 12 13]
numpy.2
增加维度
正常来说a如果单纯为一个list的话[ ]*3 代表‘复制’如下面的d所示
所以利用np.array 变成数列可以进行运算
但是还是不够,需要变成向量(矩阵)
list => array => matrix(vector)
a = np.array([1,1,1])
b = a*3
c = [1,1,1]
d = c * 3
print(b)#[3 3 3]
print(d) # [1, 1, 1, 1, 1, 1, 1, 1, 1]
a 变成 array 之后 利用[np.newaxis,:] 变成一个一行一列的向量
[np.newaxis,:] 表示的意思是:在行上增加一个纬度,列上选择所有列
[np.newaxis,0:1]:则是意思选出一列从0到1不包括1 在行增加一个维度
[0:2,np.newaxis] :按行取取出的一行中的每一个元素 ,增加一个维度
a = np.array([1,2,3])[np.newaxis,0:1]
print(a) # [[1]]
b = np.array([1,2,3])[0:2,np.newaxis]
'''
[[1]
[2]]
'''
a = np.array([1,2,3])[np.newaxis,:]#array => vector
#[[1,2,3]]
print(a.T)
c = np.array([4,5,6])[np.newaxis,:]
d = np.array([11,11,11])
print(d)
print(a)
'''
[[1]
[2]
[3]]
[11 11 11]
[[1 2 3]]
'''
矩阵的组合
三行一列的矩阵a 和 c
分别按照行 axis = 1 (行) 和 axis = 0 (列) 组合
按行组合就是直接加到右侧(要求相同的行数)
按列就是直接加到下侧(要求相同的列数)
a = np.array([1,2,3]).reshape((3,1))
print(a)
c = np.array([4,5,6]).reshape((3,1))
print(c)
print(np.concatenate((a,c),axis = 1))
print(np.concatenate((a,c),axis = 0)
'''
#(3,2)shape
[[1 4]
[2 5]
[3 6]]
#(6,1)shape
[[1] [2] [3] [4] [5] [6]]
'''
hstack 代表的是 concatenate 的axis = 1(行合并)
vstack 代表的是 concatenate 的axis = 0(列合并)
d = np.hstack((a,c))
print(d)
e = np.vstack((a,c))
print(e)
还可以实现多个 矩阵的组合
a = np.array([1,2,3]).reshape((3,1))
c = np.array([4,5,6]).reshape((3,1))
d = np.hstack((a,c))
e = np.hstack((a,c,d))#(a,c,d) this tuple can have many matrix!
print(e)
矩阵的分割
np.split(a,3,axis = 0)三个参数
a: 要被分割的矩阵
3:分割的份数必须是在被分割维度上可以整除
axis = 1(被保留的是行数【分割后行数不变】,就是说按列分割)
axis = 0(被保留的是列数【分割后列数不变】,就是说按行分割)
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,3,axis = 0))
'''
[[ 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里面包含着matrix
另外一种分割方式
hsplit : 和axis = 1的情况一样 都是保留行数的分割方式
同理 还有vsplit
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,2,axis = 1))
print(np.hsplit(a,2)
copy
a = np.arange(4)
b = a
c = a.copy()
if b is a:
print('b is a')
if c is a:
print('c is a')
网友评论