2、numpy數據選取
lst=[[1, 2, 3], [4, 5, 6]] np.array(lst)[:-1] Out[32]: array([[1, 2, 3]]) np.array(lst)[:,:-1] Out[33]: array([[1, 2], [4, 5]])
1、Python中numpy數組的拼接、合並
https://blog.csdn.net/qq_39516859/article/details/80666070
import numpy as np
#創建ndarray,array為數組,ndarray為n維數組 即 n dimension array
# <class 'numpy.ndarray'>
a=np.array([1,2,3]);print(a,type(a))
#numpy中數組,同一個數組中所有元素必須為同一個類型
#均為字符串類型
data=np.array([1,2,'a']);print(data)
data=np.mat(data);print(data)
#數組行列的變換,即轉置
# x*y -->> y*x
data=[[1,2],[3,4]]
new_data=np.array(data).transpose();print(new_data)
#1*2*3 -->> 3*2*1
data=[[[1,2,3],[4,5,6]]]
new_data=np.array(data).transpose();print(new_data)
#1*2*3 -->>1*3*2
new_data=np.array([i.transpose() for i in np.array(data)]);print(new_data)
#如何向ndarray中添加元素
#數組中所有數據合並
data=np.arange(12).reshape((3,4))
new_data=data.ravel();print(new_data) #1*1 按行合並
new_data=data.ravel('F');print(new_data) #1*1 按列合並
#創建矩陣 <class 'numpy.matrixlib.defmatrix.matrix'>
# ValueError: matrix must be 2-dimensional
b=np.mat(a);print(b,type(b))
c=np.mat([[1,2,3]]);print(c,type(c))
#創建常見矩陣
#0矩陣、全1矩陣、0-1均勻分布、小於10整數、2-8之間整數、2*2對角線為1矩陣
data=np.mat(np.zeros((3,3)));print(data)
data=np.mat(np.ones((2,4)));print(data)
data=np.mat(np.random.rand(2,2));print(data)
data=np.mat(np.random.randint((10),size=(3,3)));print(data)
data=np.mat(np.random.randint(2,8,size=(2,5)));print(data)
data=np.mat(np.eye(2,2,dtype=int));print(data)
#常見矩陣運算
data1=np.mat(np.array([[1,2],[3,4]]))
data2=np.mat(np.array([[1,1],[1,1]]))
#矩陣相乘
data=data1*data2;print(data)
#矩陣點乘
data=np.multiply(data1,data2);print(data)
#矩陣求逆、轉置
data=data1.I;print(data)
data=data1.T;print(data)
#數組、矩陣轉換為列表
data=np.array([1,2]).tolist();print(data)
data=data1.tolist();print(data)
#矩陣的分隔和合並
data1=np.mat(np.array([[1,2],[3,4]]))
new_data=data1[:1,:1];print(new_data)
#合並、按列合並
new_data=np.vstack((data1,data1));print(new_data)
#合並、按行合並
new_data=np.hstack((data1,data1));print(new_data)
#計算每一列、每一行的和
new_data=data1.sum(axis=0);print(new_data) #列和 1*2矩陣
new_data=data1.sum(axis=1);print(new_data) #行和 2*1矩陣
#計算第二行所有列和,得到一個數字
new_data=np.sum(data1[1,:]);print(new_data)
#計算最大、最小值和索引
new_data=data1.max();print(new_data) #所有元素最大值
new_data=data1.min();print(new_data) #所有元素最小值
new_data=np.max(data1,0);print(new_data) #計算所有列最大值
new_data=np.max(data1,1);print(new_data) #計算所有行最大值
new_data=np.argmax(data1,0);print(new_data) #計算所有列最大值索引
new_data=np.argmax(data1,1);print(new_data) #計算所有行最大值索引