我將矩陣 (15,15) 與陣列 (15,1) 相乘,僅列印新陣列的 6 個位置的值。但是,當我列印這些新陣列時,python 會列印如下值:[[array([20238.49170303])]]. 如何洗掉所有括號和“陣列”?
這是我的代碼:
r = np.dot(kportico, utotal) - f
rp = np.array([[r[0]],
[r[1]],
[r[2]],
[r[12]],
[r[13]],
[r[14]]])
rv = np.array([["R1x ="],
["R1y ="],
["M1 ="],
["R5x ="],
["R5y ="],
["M5 ="]])
uni = np.array([["N"],
["N"],
["N*m"],
["N"],
["N"],
["N*m"]])
size = len(rv)
print(" ")
print(" ")
if len(rv) == len(rp) and len(rv) == len(uni):
for x in range(size):
print(rv[x],rp[x],uni[x])
回傳的列印是:
['R1x ='] [[array([20238.49170303])]] ['N']
['R1y ='] [[array([77650.64938379])]] ['N']
['M1 ='] [[array([6.69388101e-09])]] ['N*m']
['R5x ='] [[array([-50238.49170304])]] ['N']
['R5y ='] [[array([86650.64938382])]] ['N']
['M5 ='] [[array([4.07453626e-10])]] ['N*m']
我想讓列印更干凈:
R1x = 20238.49170303 N
R1y = 77650.64938379 N
M1 = 6.69388101e-09 N*m
R5x = -50238.49170304 N
R5y = 86650.64938382 N
M5 = 4.07453626e-10 N*m
uj5u.com熱心網友回復:
您已經創建了 (n,1) 個形狀的陣列
In [283]: x = np.array([[1],[2],[3]]); y = np.array([['one'],['two'],['three']])
In [284]: x
Out[284]:
array([[1],
[2],
[3]])
In [285]: y
Out[285]:
array([['one'],
['two'],
['three']], dtype='<U5')
In [286]: x.shape
Out[286]: (3, 1)
如果您在第一個維度上進行迭代,則元素是(1,)形狀陣列,并顯示如下:
In [287]: for i in range(3):
...: print(y[1],x[i])
...:
['two'] [1]
['two'] [2]
['two'] [3]
如果陣列是 1d,則展平(如果需要):
In [288]: x1 = x.ravel(); y1 = y.ravel()
In [289]: x1.shape
Out[289]: (3,)
In [291]: x1,y1
Out[291]: (array([1, 2, 3]), array(['one', 'two', 'three'], dtype='<U5'))
Nowy1[0]是一個字串,并且x1[0]是一個數字:
In [292]: for i in range(3):
...: print(y1[1],x1[i])
...:
two 1
two 2
two 3
并為列印添加一些格式:
In [294]: for i in range(3):
...: print(f'{y1[1]} = {x1[i]}')
...:
two = 1
two = 2
two = 3
您還可以在 2d 陣列上使用 2d 索引:
In [297]: for i in range(3):
...: print(f'{y[1,0]} = {x[i,0]}')
...:
two = 1
two = 2
two = 3
uj5u.com熱心網友回復:
您可以創建一組必須從字串中洗掉的字符,然后以這種方式使用.join()函式:
stringa = ''.join([c for c in stringa if c not in chars])
在哪里:
stringa = "{}{}{}".format(rv[x], rp[x], uni[x])chars = ['[',']',"'"]
這里的.join()函式只獲取stringa中不存在于我們可以稱之為“禁止字符”的集合中的字符,或者更好的是,我們想要洗掉的字符。
至于測驗它,我從您提供的內容開始寫下了以下代碼:
# characters to remove
chars = ['[',']',"'"]
if len(rv) == len(rp) and len(rv) == len(uni):
for x in range(size):
stringa = "{}{}{}".format(rv[x], rp[x], uni[x])
stringa = ''.join([c for c in stringa if c not in chars])
print(stringa)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/486413.html
上一篇:了解malloc和靈活的陣列成員
