=赋值:当一个数组的值改变时,被赋值的任一数组的值相应改变
若不想要这种关联性,则采用.copy()
=赋值:当一个数组的值改变时,被赋值的任一数组的值相应改变
若不想要这种关联性,则采用.copy()
import numpy as np
//等量分割
A = np.arange(12).reshape((3,4))
//横向分割
//或:print(np.vsplit(A,2))
//输出:
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
print(np.split(A,3,axis=0))
//纵向分割
//输出:
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
print(np.split(A,2,axis=1))
//不等量分割
//输出:
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
print(np.array_split(A,3,axis=0))
import numpy as np
//序列的垂直拼接
//输出:
[[1 1 1]
[2 2 2]]
(3,) (2, 3)
A = np.array([1,1,1])
B = np.array([2,2,2])
C = np.vstack((A,B))
print(C)
print(A.shape, C.shape)
//序列的水平拼接
//输出:
[1 1 1 2 2 2]
(3,) (6,)
A = np.array([1,1,1])
B = np.array([2,2,2])
D = np.hstack((A,B))
print(D)
print(A.shape, D.shape)
//将横向序列转变为竖向序列:通过np.newaxis改变维度
//输出:
[[1]
[1]
[1]]
A = np.array([1,1,1])
A = A[:, np.newaxis]
//或:A = np.array([1,1,1])[:, np.newaxis]
print(A)
//合并时定义合并的维度
//输出:
[[1 2 2 1]
[1 2 2 1]
[1 2 2 1]]
A = np.array([1,1,1])[:, np.newaxis]
B = np.array([2,2,2])[:, np.newaxis]
C = np.concatenate((A,B,B,A),axis =1)
print(C)
import numpy as np
//一维序列索引
A = np.arrange(3,15)
//输出:
6
print(A[3])
//二维数组索引
//输出:
[11 12 13 14]
8
12
A = np.arrange(3,15).reshape((3,4))
print(A[2])
print(A[1][1])
print(A[2,1])
//用冒号输出所有数
//输出:
[4 8 12]
[8 9]
print(A[:,1])
print(A[1, 1:3])
//用for迭代每一行的数
//输出:
[2 3 4 5]
[6 7 8 9]
[10 11 12 13]
for row in A:
print (row)
//用for循环迭代每一列的数
//输出:
[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]
for column in A.T:
print (column)
//迭代每一个项目
for item in A.flat:
print(item)
import numpy as np
A = np.arange(2,14).reshape((3,4))
//输出最小值的索引
//输出:0
print(np.argmin(A))
//输出最大值的索引
//输出:11
print(np.argmax(A))
//计算平均值方法1:
//输出:7.5
print(np.mean(A))
//或:print(A.mean())
//计算平均值方法2:
//输出:7.5
print(np.average(A))
//计算中位数
//输出:7.5
print(np.median(A))
//累加
//输出:[ 2 5 9 14 20 27 35 44 54 65 77 90]
print(np.cumsum(A))
//累差
//输出:
[[1 1 1]
[1 1 1]
[1 1 1]]
print(np.diff(A))
//输出非零的数的位置(输出的 第一个array代表行数,第二个array代表列数)
//输出:(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
print(np.nonzero(A))
//逐行从小到大排序
//输出:
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
print(np.sort(A))
//矩阵的转置
//输出:
[[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
print(np.transpose(A))
//或:print(A.T)
//矩阵转置和矩阵相乘
//输出:
[[140 158 176 194]
[158 179 200 221]
[176 200 224 248]
[194 221 248 275]]
print((A.T).dot(A))
//设置一个范围,矩阵中大于该范围的值都用范围的最大值表示,小于该范围的值都用范围的最小值表示
//输出:
[[5 5 5 5]
[6 7 8 9]
[9 9 9 9]]
print(np.clip(A,5,9))
1. numpy的运算
import namoy as np
a = np.array([10,20,30,40])
b = np.arange(4)
加法:
print(a,b)
c = a+b
print(c)
输出结果:
[10 20 30 40] [0 1 2 3]
[10 21 32 43]
平方:
c = b**2
print(c)
输出结果:
[0 1 4 9]
sin/cos:
c = 10*np.cos(a)
print(c)
输出结果:
[-8.39071529 4.08082062 1.5425145 -6.66938062]
判断序列中数值大小是否符合条件:
print(b)
print(b==3)
输出结果:
[0 1 2 3]
[False False False True]
矩阵乘法:
(1)逐个相乘:
a = np.array([[1,1],
[0,1]])
b = np.arrange(4).reshape(2,2)
c = a*b
print(c)
输出结果:
[[0 1]
[0 3]]
(2)矩阵相乘:
a = np.array([[1,1],
[0,1]])
b = np.arrange(4).reshape(2,2)
c_dot = np.dot(a,b)
//或:c_dot = a.dot(b)
print(c_dot)
输出结果:
[[2 4]
[2 3]
求和、最大值、最小值
import numpy as np
a = np.random.random((2,4))
print(a)
print(np.sum(a))
print(np.min(a))
print(np.max(a))
输出结果:
[[0.54856051 0.75547687 0.97634788 0.03362161]
[0.03198332 0.70799137 0.07809093 0.76455108]]
3.8966235679462295
0.03198332442659946
0.9763478806201845
[2.31400687 1.5826167 ]
(axis=0表示在列数中的结果,axis=1b)
1. 创建列表和矩阵
列表:
import numpy as np
a = np.array([2,23,4])
print(a)
输出:[2 23 4]
(输出结果中无逗号)
矩阵:
import numpy as np
a = np.array([2,23,4]
[2,32,4])
print(a)
输出:
[2,23,4]
[2,32,4]
2. 设置和显示数据类型
import numpy as np
a = np.array([2,23,4], dtype=np.int)
print(a.dtype)
输出:int64
(不输入数据长度时默认为64位)
import numpy as np
a = np.array([2,23,4], dtype=np.int32)
print(a.dtype)
输出:int32
若需要存储空间小,则设置小的数据长度(e.g.16位);
若需要存储空间大,则设置大的数据长度(e.g. 64位)
3. 创建全0矩阵、全1矩阵和空矩阵
全0矩阵:
a = np.zero( (3,4) )
print(a)
输出结果:
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
全1矩阵:
a = np.ones( (3,4), dtype=np.int16 )
print(a)
输出结果:
[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
空矩阵:
a = np.empty( (3,4) )
print(a)
输出结果:
[[6.23042070e-307 1.89146896e-307 1.37961302e-306 1.05699242e-307]
[8.01097889e-307 1.78020169e-306 7.56601165e-307 1.02359984e-306]
[1.29060531e-306 1.24611741e-306 1.11261027e-306 3.01468662e+161]]
(是十分接近0的数)
4. 生成有序序列或矩阵(相当于python中的range功能)
a = np.arange(10,20,2)
print(a)
输出:
[10 12 14 16 18]
a = np.arange(12).reshape((3,4))
print(a)
[[0 1 2 3]
[4 5 6 7]
[8 9 10 11]]
5. 创建linspace()
a = np.linspace(1,10,5)
print(a)
输出结果:
[1. 3.25 5.5 7.75 10.]
a = np.linspace(1,10,6).reshape((2,3))
print(a)
输出结果:
[[1. 2.8 4.6]
[6.4 8.2 10.]]
import numpy as np
array = np.array([[1,2,3],
[2,3,4])
print(array)
print('number of dim:'array.ndim)
print('shape:', array.shape)
print('size:', array.size)
输出结果:
[[1,2,3],
[2,3,4]]
number of dim: 2
shape: (2,3)
size: 6