日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【记录】MATLAB|Python NumPy|两种语言的数组/矩阵中元素修改方式的总结和对比

發布時間:2025/5/22 编程问答 16 如意码农
生活随笔 收集整理的這篇文章主要介紹了 【记录】MATLAB|Python NumPy|两种语言的数组/矩阵中元素修改方式的总结和对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 二維矩陣
    • 操作
      • 1. 將數組大于0的數全部加1
      • 2. 刪除元素
        • ①刪除單個元素
        • ②刪除一列元素
      • 3. 添加一行或多行
        • ①添加一行
        • ②添加多行
      • 4. 獲取行/列數
      • 5. 格式化輸出數組
  • 結構數組
    • 操作
      • 1. 篩選i小于1的元素
      • 2. 格式化輸出結構數組中的數組

二維矩陣

以二維矩陣a為例。
1 matlab:

a=[1 -2 3;-4 5 0]; % 定義矩陣a
disp(a); % 打印矩陣a

結果:

2 python:

import numpy as np
a = np.array([[1, -2, 3],[4, 5, 0]]) # 定義矩陣a
print (a) # 打印矩陣a

結果:

操作

1. 將數組大于0的數全部加1

1 matlab:

a(a>0)=a(a>0)+1;

同理,只要改括號內的條件,就可以修改其他元素。
2 python:
使用Numpy的內置索引。

a[a>0]=a[a>0]+1

2. 刪除元素

①刪除單個元素

1 matlab:

a(2)=[];

注意索引從1開始,并且順序如下:

刪除后:1 -2 5 3 0

2 python:

a = np.delete(a, 2)

索引從0開始,順序如下:

刪除后:1 -2 4 5 0

②刪除一列元素

1 matlab:

a(:,2)=[];

:表示選擇所有行,2表示選擇第二列的元素,綜合起來表示刪除第2列。

2 python:

a = np.delete(a, 2, 1)

刪除第3列。第三個參數為1時刪除列,為0刪除行。

其余刪除操作同理。

3. 添加一行或多行

①添加一行

1 matlab:

row=[1 2 3];
a=[a;row];

2 python:
可用appendinsert

row = np.array([1, 2, 3])
a = np.append(a,[row],axis= 0)
#a = np.insert(a, 2, row, axis=0) # 插入成為第3行

同樣地,第三個參數為1時列操作,為0行操作。

②添加多行

1 matlab:

row=[1 2 3;2 4 5;7 8 9];
a=[a;row];

2 python:

row = np.array([[1, 2, 3],[2, 4, 5],[7, 8, 9]])
a = np.append(a,row,axis= 0)
#a = np.insert(a, 2, row, axis=0) # 插入成為第3行

注意中括號[]

4. 獲取行/列數

1 matlab:

[row,line]=size(a); % 行,列
row=size(a,1); % 行
line=size(a,2); % 列

2 python:

(row, line) = a.shape # 行,列
row = a.shape(0) # 行
line = a.shape(1) # 列

5. 格式化輸出數組

1 matlab:
對于數值數組、字符數組或字符串數組,可用mat2str

a=mat2str(a); % mat格式轉換成字符串
a=strrep(a,' ',','); % 將空格替換成,符號
a=strrep(a,';','],['); % 將分號替換成"],["
disp(a);

mat2str也支持數字有效位數設定,不展開講了,感興趣見mat2str(Convert matrix to characters)_MathWorks。

自定義性更高的遍歷輸出:

for row=1:size(a,1)
fprintf("[");
for line=1:size(a,2)
fprintf("%d",a(row,line));
if(line==size(a,2))
fprintf("]");
else
fprintf(",");
end
end
if(row==size(a,1))
fprintf("\n");
else
fprintf(",");
end
end

結果均為:

2 python:

a = np.array2string(a, separator=',') # 用逗號作為分隔符
a = a.replace('\n','') # 去除換行
print (a)

結果:

參考:stackoverflow_string-representation-of-a-numpy-array-with-commas-separating-its-elements

設置np輸出元素格式可用np.set_printoptions
不展開講了。感興趣見“numpy.set_printoptions_NumPy 1.22 中文”。

結構數組

以結構數組s為例。
1 matlab:

row=4; % 行數
line=1; % 列數
s(row,line) = struct('i',0,'F',0.1,'Matrixs',[]); % 定義三個元素
% 只初始化第二個元素
s(2).i=2;
s(2).F=0.2;
s(2).Matrixs=[1 2 3;4 5 6];
disp(s);

結果:


可以看到,最開始初始化的元素,只對最后一個元素生效,也就是元素s(row,line)。所以不要想著用這種方式直接初始化。可以循環初始化。

2 python:

import numpy as np
type = np.dtype({'names':['i','F','Matrixs'],'formats':['i4','f8','(4,3)i4']})
s = np.rec.array([(0, 0.1, [[0,0,0],[0,0,0],[0,0,0],[0,0,0]])]*4, dtype=type)
s[1].i=2;
s[1].F=0.2;
s[1].Matrixs=[[1,2,3],[4,5,6],[0,0,0],[0,0,0]]
print (s)

numpy貌似不支持創建形狀不確定的子數組,就像c語言里創建數組需要提前告知數組總大小一樣(這里我開辟的是4*3)。
matlab類型根本不用自己定義,隨便加什么都可以,這波我站matlab

結果:

操作

1. 篩選i小于1的元素

1 matlab:

s=s([s.i]<1); % 注意中括號

注意,當結構數組中有未定義的[]時,該篩選方法可能出錯,請保證空值已經賦值完畢
出錯樣例如:

s=s([s.i]>0);

得到的結果是:

這是因為[]matlab中是空值,[s.i]會自動刪掉空值,在本例中只剩下兩項2 0,大于0的是2,索引是1。但1對應的實際元素是s(1),而不是s.i==2s(2)

2 python:

s=s[s.i<1]

結果:

2. 格式化輸出結構數組中的數組

1 matlab:

對于結構數組中的數組,我尚未想到一次性完整提取其中所有數組的方式,可循環提取再輸出:

for i=1:size(s,1)
a=mat2str(s(i).Matrixs); % mat格式轉換成字符串
a=strrep(a,' ',','); % 將空格替換成,符號
a=strrep(a,';','],['); % 將分號替換成"],["
disp(a);
end

結果:

2 python:

a = np.array2string(s.Matrixs, separator=',') # 用逗號作為分隔符
a = a.replace('\n','') # 去除換行
print (a)

python不用循環,稍微方便一些。


如果以后還用到別的,再補充。

總結

以上是生活随笔為你收集整理的【记录】MATLAB|Python NumPy|两种语言的数组/矩阵中元素修改方式的总结和对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 热99在线| 1级片在线观看 | 久久乐国产精品 | 久久b | 四虎影库 | 国产精品夜夜爽张柏芝 | 国产一线二线在线观看 | 久久夜色精品国产欧美乱极品 | 国产精品99久久久久久宅男 | av免费在线播放 | 日韩av在线一区二区 | 国产欧美一区在线观看 | 操操操操操操操操操操 | 美女被叉叉的影院 | 国产精品sm调教免费专区 | 老色批永久免费网站www | 亚洲图片中文字幕 | 亚洲精品中文字幕在线观看 | 最好看的2019年中文在线观看 | jjzz国产| 99色99| 亚洲国产精品网站 | 国产一区二区精品丝袜 | 色播五月激情 | 神马午夜麻豆 | 日韩国产三级 | 精品+无码+在线观看 | 我要操av| 三级做爰在线观看视频 | 日韩av成人在线观看 | 在线观看日韩精品 | av先锋在线| 韩国三级做爰高潮 | 久久精品色妇熟妇丰满人妻 | 五月天激情社区 | 国产高潮又爽又无遮挡又免费 | 爽插 | 丁香花免费高清完整在线播放 | 91狠狠爱 | 国产经典一区 | 黑森林av凹凸导航 | 亚洲69视频 | 亚洲丝袜在线观看 | 欧美一区二区三区在线看 | 美国式禁忌1980 | 中文字幕高清av | wwwxx欧美| 青青草免费在线视频 | 国产三级麻豆 | 久久久久久久蜜桃 | 免费在线观看亚洲 | a级片免费视频 | 国产盗摄精品 | 97久久人国产精品婷婷 | 国产精品美女久久久网av | 亚洲午夜18毛片在线看 | a√天堂在线 | 性感少妇av | 精品人妻一区二区三区蜜桃视频 | 国产99999 | 男女黄色又爽大片 | 看黄色的网站 | 一区精品二区国产 | 国产精品熟女一区二区不卡 | 农村黄色片 | 性视频黄色 | 福利一区二区在线 | www在线观看国产 | 欧美中文一区 | 亚洲精品女人 | 麻豆三级在线观看 | 精品视频在线一区 | 理论片中文 | 日韩精品在线一区二区三区 | av污| 超碰公开在线观看 | 中文字av| 午夜福利毛片 | 黄色美女av | 麻豆av在线免费观看 | 日韩欧美黄色大片 | 日韩中文字幕视频 | 超碰777 | 妻子的性幻想 | 免费的一级黄色片 | 精品无码一区二区三区免费 | 欧美三级黄 | 澳门色网 | 亚洲欧美综合 | 日韩高清成人 | 欧美国产综合视频 | av日韩在线播放 | 亚洲影院在线播放 | 中文在线字幕观看 | 6—12呦国产精品 | 91精品色| av直播在线观看 | 夜夜视频 | 男人的天堂视频网站 |