NumPy科学计算库学习_008_NumPy数组的花式索引和索引技巧
2022/9/13 6:53:08
本文主要是介绍NumPy科学计算库学习_008_NumPy数组的花式索引和索引技巧,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、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、关于笛卡尔积
的计算
- 计算过程
- 笛卡尔积在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]
这篇关于NumPy科学计算库学习_008_NumPy数组的花式索引和索引技巧的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22[开源]10.3K+ Star!轻量强大的开源运维平台,超赞!
- 2024-11-21Flutter基础教程:新手入门指南
- 2024-11-21Flutter跨平台教程:新手入门详解
- 2024-11-21Flutter跨平台教程:新手入门与实践指南
- 2024-11-21Flutter列表组件教程:初学者指南
- 2024-11-21Flutter列表组件教程:新手入门指南
- 2024-11-21Flutter入门教程:初学者必看指南
- 2024-11-21Flutter入门教程:从零开始的Flutter开发指南
- 2024-11-21Flutter升级教程:新手必读的升级指南
- 2024-11-21Flutter升级教程:轻松掌握Flutter版本更新