一、1维NumPy数组
1、创建1维NumPy数组
arr = np.array([0,10,3,8,24,5,18,2,99,66])
print("【arr】/n",arr)
【arr】
[ 0 10 3 8 24 5 18 2 99 66]
2、从1维NumPy数组中挑选元素索引、并赋值给新的对象
- 将arr2内的元素修改不会影响到arr本身哦
arr2 = arr[[0,0,0,2,3,-1,-1]]
print("【arr2修改前】/n",arr2)
arr2[1] = 1024
print("【arr2修改后】/n",arr2)
print("【arr】/n",arr)
【arr2修改前】
[ 0 0 0 3 8 66 66]
【arr2修改后】
[ 0 1024 0 3 8 66 66]
【arr】
[ 0 10 3 8 24 5 18 2 99 66]
二、2维NumPy数组
1、生成一个2维NumPy数组
/[arr2d=
/begin{bmatrix}
1&3&5&7&9//
2&4&6&8&10//
12&18&20&23&37//
123&55&32&11&209//
/end{bmatrix}/]
arr2d = np.array([[1,3,5,7,9],[2,4,6,8,10],[12,18,20,23,37],[123,55,32,11,209]])
print("【arr2d】/n",arr2d)
【arr2d】
[[ 1 3 5 7 9]
[ 2 4 6 8 10]
[ 12 18 20 23 37]
[123 55 32 11 209]]
2、2维NumPy数组中,获取第2行
和第4行
数据
/[arr2d=
/begin{bmatrix}
1&3&5&7&9//
/color{blue}{2}&/color{blue}{4}&/color{blue}{6}&/color{blue}{8}&/color{blue}{10}//
12&18&20&23&37//
/color{blue}{123}&/color{blue}{55}&/color{blue}{32}&/color{blue}{11}&/color{blue}{209}//
/end{bmatrix}
/color{green}{/Longrightarrow}
/begin{bmatrix}
/color{blue}{2}&/color{blue}{4}&/color{blue}{6}&/color{blue}{8}&/color{blue}{10}//
/color{blue}{123}&/color{blue}{55}&/color{blue}{32}&/color{blue}{11}&/color{blue}{209}//
/end{bmatrix}
/]
print("【获取第2行和第4行数据】/n",arr2d[[1,3]])
【获取第2行和第4行数据】
[[ 2 4 6 8 10]
[123 55 32 11 209]]
3、2维NumPy数组中,获取第2行第3列
和第4行第5列
的数据
/[arr2d=
/begin{bmatrix}
1&3&5&7&9//
{2}&{4}&/color{blue}{6}&{8}&{10}//
12&18&20&23&37//
{123}&{55}&{32}&{11}&/color{blue}{209}//
/end{bmatrix}
/color{green}{/Longrightarrow}
/begin{bmatrix}
/color{blue}{6}&/color{blue}{209}//
/end{bmatrix}
/]
print("【获取第2行第3列和第4行第5列的数据】/n",arr2d[[1,3],[2,4]])
【获取第2行第3列和第4行第5列的数据】
[ 6 209]
4、2维NumPy数组中,获取第2行中:第3列、第4列、第5列
的数据
/[arr2d=
/begin{bmatrix}
1&3&5&7&9//
{2}&{4}&/color{blue}{6}&/color{blue}{8}&/color{blue}{10}//
12&18&20&23&37//
{123}&{55}&{32}&{11}&{209}//
/end{bmatrix}
/color{green}{/Longrightarrow}
/begin{bmatrix}
/color{blue}{6}&/color{blue}{8}&/color{blue}{10}//
/end{bmatrix}
/]
print("【获取第2行中:第3列、第4列、第5列的数据】/n",arr2d[1,[2,3,4]])
【获取第2行中:第3列、第4列、第5列的数据】
[ 6 8 10]
5、2维NumPy数组中,获取第2行、第3列
;第2行、第4列
;第2行、第5列
;第3行、第3列
;第2行、第4列
;第3行、第5列
的数据
/[arr2d=
/begin{bmatrix}
1&3&5&7&9//
{2}&{4}&/color{blue}{6}&/color{blue}{8}&/color{blue}{10}//
12&18&/color{blue}{20}&/color{blue}{23}&/color{blue}{37}//
{123}&{55}&{32}&{11}&{209}//
/end{bmatrix}
/color{green}{/Longrightarrow}
/begin{bmatrix}
/color{blue}{6}&/color{blue}{8}&/color{blue}{10}//
/color{blue}{20}&/color{blue}{23}&/color{blue}{37}//
/end{bmatrix}
/]
print("【获取第2行、第3列;第2行、第4列;第2行、第5列;第3行、第3列;第2行、第4列;第3行、第5列的数据】/n",arr2d[[1,2],2:])
print("【获取第2行、第3列;第2行、第4列;第2行、第5列;第3行、第3列;第2行、第4列;第3行、第5列的数据】/n",arr2d[[1,2]][:,2:])
【获取第2行、第3列;第2行、第4列;第2行、第5列;第3行、第3列;第2行、第4列;第3行、第5列的数据】
[[ 6 8 10]
[20 23 37]]
【获取第2行、第3列;第2行、第4列;第2行、第5列;第3行、第3列;第2行、第4列;第3行、第5列的数据】
[[ 6 8 10]
[20 23 37]]
6、2维NumPy数组中,获取矩阵数组4个角的数据
+第1行、第3列
+第4行、第3列
的数据
/[arr2d=
/begin{bmatrix}
/color{blue}1&3&/color{blue}5&7&/color{blue}9//
{2}&{4}&{6}&{8}&{10}//
12&18&{20}&{23}&{37}//
/color{blue}{123}&{55}&/color{blue}{32}&{11}&/color{blue}{209}//
/end{bmatrix}
/color{green}{/Longrightarrow}
/begin{bmatrix}
/color{blue}{1}&/color{blue}{5}&/color{blue}{9}//
/color{blue}{123}&/color{blue}{32}&/color{blue}{209}//
/end{bmatrix}
/]
print("【获取`矩阵数组4个角的数据`+`第1行、第3列`+`第4行、第3列`的数据】/n",arr2d[[0,3]][:,[0,2,4]])
【获取`矩阵数组4个角的数据`+`第1行、第3列`+`第4行、第3列`的数据】
[[ 1 5 9]
[123 32 209]]
7、关于笛卡尔积
的计算
- 计算过程
/[A=
/begin{bmatrix}
a&b//
c&d//
/end{bmatrix}
B=
/begin{bmatrix}
2//
3//
/end{bmatrix}
/]
/[/color{green}{/Downarrow}
/]
/[{A}/otimes{B}=
/begin{bmatrix}
aB&bB//
cB&dB//
/end{bmatrix}
=
/begin{bmatrix}
2a&2b//
3a&3b//
2c&2d//
3c&3d//
/end{bmatrix}
/color{red}{/neq}
{B}/otimes{A}=
/begin{bmatrix}
2A//
3A//
/end{bmatrix}
=
/begin{bmatrix}
2a&2b//
2c&2d//
3a&3b//
3c&3d//
/end{bmatrix}
/]
- 笛卡尔积在NumPy中的使用
np.ix_(待提取元素的行标, 待提取元素的列标)
print("【arr2d】")
print(arr2d)
print("【arr2d】选取行数")
print(arr2d[[1,3,3,3]])
print("【arr2d】在选取行数的基础上,选取列数")
print(arr2d[[1,3,3,3]][:,[2,4,4]])
print("【以上操作可以用np.ix_()代替】")
print(arr2d[np.ix_([1,3,3,3],[2,4,4])])
【arr2d】
[[ 1 3 5 7 9]
[ 2 4 6 8 10]
[ 12 18 20 23 37]
[123 55 32 11 209]]
【arr2d】选取行数
[[ 2 4 6 8 10]
[123 55 32 11 209]
[123 55 32 11 209]
[123 55 32 11 209]]
【arr2d】在选取行数的基础上,选取列数
[[ 6 10 10]
[ 32 209 209]
[ 32 209 209]
[ 32 209 209]]
【以上操作可以用np.ix_()代替】
[[ 6 10 10]
[ 32 209 209]
[ 32 209 209]
[ 32 209 209]]
8、布尔
值索引
chars = np.array(['a','b','c','d','e','f','g','h','a'])
print("【chars】/n",chars)
cond1 = (chars == 'a')
print("【cond1】/n",cond1)
print("【返回chars数组中,元素为a的字符】/n",chars[cond1])
print("")
nums = np.array([1,2,3,4,5,6,7])
print("【nums】/n",nums)
cond2 = (nums >= 4)
cond3 = (nums < 7)
print("【cond2 & cond3】/n",cond2 & cond3)
print("【返回nums数组中,元素大于等于4且小于7的数】/n",nums[cond2 & cond3])
【chars】
['a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'a']
【cond1】
[ True False False False False False False False True]
【返回chars数组中,元素为a的字符】
['a' 'a']
【nums】
[1 2 3 4 5 6 7]
【cond2 & cond3】
[False False False True True True False]
【返回nums数组中,元素大于等于4且小于7的数】
[4 5 6]
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289122.html