我試圖寫下一個非常簡單的行來獲得一個一維陣列,但是,輸出并不像預期的那樣,它是正確的,但是每個 5 個元素前面都有單詞陣列,我附上了代碼:
import numpy as np
c=np.array([[1,11,21,31,5],[4,14,24,34,5],
[7,17,27,37,5],[31,41,51,61,5],[34,44,54,64,5],
[37,47,57,67,5],[61,71,81,91,5],[64,74,84,94,5],
[64,74,84,94,5],[64,74,84,94,5],
[64,74,84,94,5]
,[64,74,84,94,5],[64,74,84,94,5],[64,74,84,94,5],
[64,74,84,94,5],
[67,77,87,97,5]])
s=np.array([4,3,2,1])
r_max=np.max(s)
d = []
x=4
for I in range(x-1,-2,-2):
for J in range(r_max-s[I]):
d=[d,c[r_max*I-J 3]]
print(d)
# Output: [[[[[[[[], array([67, 77, 87, 97, 5])], array([64, 74, 84, 94, 5])], array([64,
# 74, 84, 94, 5])], array([64, 74, 84, 94, 5])], array([67, 77, 87, 97, 5])],
# array([64, 74, 84, 94, 5])], array([64, 74, 84, 94, 5])]
# expected output same numbers but as 1D array as the following:
#[67, 77, 87, 97, 64, 74, 84, 94, 5, 64, 74, 84, 94, 5, 64, 74, 84, 94, 5,67, 77, 87,
# 97, 5,64, 74, 84, 94, 5,64, 74, 84, 94, 5]]
uj5u.com熱心網友回復:
d=[d,c[r_max*I-J 3]],在這里您將添加一個串列作為元素。
如果你想merge2串列中,你可以這樣做:d = d list(c[r_max*I-J 3]])。
您也可以使用np.concatenate:(d = np.concatenate((d, c[r_max*I-J 3]])不要忘記修改d定義d = np.array([])
uj5u.com熱心網友回復:
使用list.append來代替:
In [373]: d = []
...: x=4
...: for I in range(x-1,-2,-2):
...: for J in range(r_max-s[I]):
...: d.append(c[r_max*I-J 3])
...:
In [374]: d
Out[374]:
[array([67, 77, 87, 97, 5]),
array([64, 74, 84, 94, 5]),
array([64, 74, 84, 94, 5]),
array([64, 74, 84, 94, 5]),
array([67, 77, 87, 97, 5]),
array([64, 74, 84, 94, 5]),
array([64, 74, 84, 94, 5])]
In [375]: np.array(d)
Out[375]:
array([[67, 77, 87, 97, 5],
[64, 74, 84, 94, 5],
[64, 74, 84, 94, 5],
[64, 74, 84, 94, 5],
[67, 77, 87, 97, 5],
[64, 74, 84, 94, 5],
[64, 74, 84, 94, 5]])
當您numpy在串列中收集陣列時,顯示內容包括單詞array。它告訴我們串列包含陣列。d串列的元素都是相同的形狀,因此np.array可以生成一個漂亮的二維數字陣列。
與d=[d,c[r_max*I-J 3]]您收集了相同的陣列,但是在一個深度嵌套的串列串列中。那不能變成多維陣列。
列印物件時,python 不會拋出諸如“陣列”或括號之類的隨機單詞。這些是由物件本身產生的,并說明了它們的身份和結構。學習閱讀這些資訊。不要吝嗇基本的python和numpy閱讀。
1d 期望
該二維陣列可以變成一維陣列ravel:
In [376]: np.array(d).ravel()
Out[376]:
array([67, 77, 87, 97, 5, 64, 74, 84, 94, 5, 64, 74, 84, 94, 5, 64, 74,
84, 94, 5, 67, 77, 87, 97, 5, 64, 74, 84, 94, 5, 64, 74, 84, 94,
5])
另一種選擇是extend在收集陣列時使用d:
In [377]: d = []
...: x=4
...: for I in range(x-1,-2,-2):
...: for J in range(r_max-s[I]):
...: d.extend(c[r_max*I-J 3])
...:
In [378]: d
Out[378]:
[67,
77,
87,
...
94,
5]
In [379]: np.array(d)
Out[379]:
array([67, 77, 87, 97, 5, 64, 74, 84, 94, 5, 64, 74, 84, 94, 5, 64, 74,
84, 94, 5, 67, 77, 87, 97, 5, 64, 74, 84, 94, 5, 64, 74, 84, 94,
5])
hstack也可以與原版一起使用d。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/316987.html
