【python-NOJ-季总结】—【第七季:Numpy库】—数组array的使用

介绍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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值