介绍array的一些知识点。
array是来自科学计算基础库Numpy的数组,可以方便的进行多维数组元素级的运算。
目录1. 用eval()来处理输入
2. 数组复制函数np.tile()
3. 删除数组元素
3. 交换数组中两行值和两列值
4. 创建值相同的一维数组
5. 将两个数组连起来
6. np.fromiter()函数自动生成数组
1. 用eval()来处理输入
eval()是处理字符串函数,返回字符串的数字结果。可以将输入的数组识别成列表,作为参数传给数组进行创建。
import numpy as np arr=np.array(eval(input())) print(arr) print(len(arr)) print(arr[0]) 输入: [[1,2,3],[4,5,6]] 输出: [[1 2 3] [4 5 6]] 2 [1 2 3]2. 数组复制函数np.tile()
np.tile( arr, ( row, col )):参数1是要复制的数组,参数2以元组形式,表示复制几行几列。
(1)当仅有一个参数时:
对于每一维,复制元素,添加到后面:
(2)当有两个参数时,表示复制几行几列:
3. 删除数组元素(1)首先说一下删除列表元素的三个方法:
list=['1','2','3','4'] list.remove('2') del list[0] list.pop(1)
其中remove()要知道列表中的元素名,del()和pop()只需要知道下标即可。
(2)np.delete( arr, index ):参数1是数组,参数2是下标。
import numpy as np arr=np.array(eval(input())) print(arr[0]) arr=np.delete(arr,0) print(arr) 输入: [[1,2,3],[4,5,6]] 输出: [1 2 3] [2 3 4 5 6]3. 交换数组中两行值和两列值
(1)arr[ [n1, n2], : ] = arr[ [ n2, n1 ], : ]:交换行
(2)arr[ :, [n1, n2] ] = arr[ :, [ n2, n1 ] ]:交换列
当然,里面的参数n1,n2也可以有多个,前后对应即可。
import numpy as np arr=np.array(eval(input())) arr[[0,1],:]=arr[[1,0],:] print(arr) arr[:,[0,1]]=arr[:,[1,0]] print(arr) 输入: [[1,2,3],[4,5,6],[7,8,9]] 输出: [[4 5 6] [1 2 3] [7 8 9]] [[5 4 6] [2 1 3] [8 7 9]]4. 创建值相同的一维数组
(1)先用list创建,然后作为参数传给np.array;
(2)使用np.full(( row,col ),val ):创建值为val的m*n维数组;
需要注意,一维数组,第二维为空,所以只需要给np.full传row即可。
import numpy as np arr=np.array(eval(input())) print(len(arr)) print(arr.shape) arr2=np.full((3,),-1) print(arr2) print(arr2.shape) 输入: [1,2,3] 输出: 3 (3,) [-1 -1 -1] (3,)
还有以下函数用来创建数组:
(1)np.zeros():创建指定形状全0数组;
(2)np.ones():创建指定形状全1数组;
(3)np.arange( start,end,step ):等差序列,不含终值;
(4)np.linespace( start,end,eleNum,endpoint=False):第三个参数是元素个数,第四个参数看是否含终值;
(5)np.logspace( start,end,eleNum):起始幂,终止幂,元素个数,默认基数为10,默认含终值。基数改为2,不包含终值:np.logspace(0, 2, 12, base=2, endpoint=False)
(6) np.empty((2,3),np.int) : 数组未初始化,元素的值为随机值; 5. 将两个数组连起来(1)np.append():
三种拼接方法,默认拼接成一维数组,沿第一个轴拼接和沿着第二个轴拼接:
import numpy as np arr1=[[1,2,3],[4,5,6]] arr2=[[7,8,9],[10,11,12]] print(np.append(arr1,arr2)) # 扁平化之后输出,为一维数组 print(np.append(arr1,arr2,axis=0)) # 沿第一个坐标轴拼接 print(np.append(arr1,arr2,axis=1)) # 沿第二个坐标轴拼接 输出: [ 1 2 3 4 5 6 7 8 9 10 11 12] [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]] [[ 1 2 3 7 8 9] [ 4 5 6 10 11 12]]
此时还能拼接值,np.append(arr1,value),不过会自动变为一维数组:
import numpy as np arr2=np.array([[7,8,9],[10,11,12]]) arr3=np.append(arr2,1) print(arr3) 输出: [ 7 8 9 10 11 12 1]
(2)np.concatenate()
跟上面用法相同,不过无axis参数时默认是第一维:
import numpy as np arr1=np.array([[1,2,3],[4,5,6]]) arr2=np.array([[7,8,9],[10,11,12]]) print(np.concatenate((arr1,arr2))) 输出: [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
(3)np.vstack()
连接两个一维数组,np.append()不能连接一维:
import numpy as np arr1=np.array([1,2,3]) arr2=np.array([1,2,3]) print(np.vstack((arr1,arr2))) 输出: [[1 2 3] [1 2 3]]6. np.fromiter()函数自动生成数组
传入的是可迭代对象和数据类型,返回数组:
可迭代对象可以是列表,元组等:
import numpy as np list = [0, 1, 2, 3,4] print(np.fromiter(list,dtype=np.int8)) tup=(1,2,3,4) print(np.fromiter(tup,dtype=np.int8)) 输出: [0 1 2 3 4] [1 2 3 4]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)