一個學習的重要教訓是,你應該總是選擇最適合您的問題正確的數據結構。在大多數情況下,如果你想添加/連接,那麼numpy是錯誤的選擇,除非你可以簡單地設置最終數組(最終形狀)並通過設置它的切片來改變它。
在這種情況下,顯而易見的選擇將是使用一個正常pythonlist
和range
:
mydata = [[49123400, 49123499],
[33554333, 33554337]]
mynewdata = []
for sublist in mydata:
mynewdata.extend(range(sublist[0], sublist[1]+1))
>>> mynewdata
[49123400, 49123401, 49123402, 49123403, 49123404, 49123405,
49123406, 49123407, 49123408, 49123409, 49123410, 49123411,
49123412, 49123413, 49123414, 49123415, 49123416, 49123417,
49123418, 49123419, 49123420, 49123421, 49123422, 49123423,
49123424, 49123425, 49123426, 49123427, 49123428, 49123429,
49123430, 49123431, 49123432, 49123433, 49123434, 49123435,
49123436, 49123437, 49123438, 49123439, 49123440, 49123441,
49123442, 49123443, 49123444, 49123445, 49123446, 49123447,
49123448, 49123449, 49123450, 49123451, 49123452, 49123453,
49123454, 49123455, 49123456, 49123457, 49123458, 49123459,
49123460, 49123461, 49123462, 49123463, 49123464, 49123465,
49123466, 49123467, 49123468, 49123469, 49123470, 49123471,
49123472, 49123473, 49123474, 49123475, 49123476, 49123477,
49123478, 49123479, 49123480, 49123481, 49123482, 49123483,
49123484, 49123485, 49123486, 49123487, 49123488, 49123489,
49123490, 49123491, 49123492, 49123493, 49123494, 49123495,
49123496, 49123497, 49123498, 49123499, 33554333, 33554334,
33554335, 33554336, 33554337]
這可以被輕易地轉化成一個numpy.array
:
>>> np.array(mynewdata)
array([49123400, 49123401, 49123402, 49123403, 49123404, 49123405,
49123406, 49123407, 49123408, 49123409, 49123410, 49123411,
49123412, 49123413, 49123414, 49123415, 49123416, 49123417,
49123418, 49123419, 49123420, 49123421, 49123422, 49123423,
49123424, 49123425, 49123426, 49123427, 49123428, 49123429,
49123430, 49123431, 49123432, 49123433, 49123434, 49123435,
49123436, 49123437, 49123438, 49123439, 49123440, 49123441,
49123442, 49123443, 49123444, 49123445, 49123446, 49123447,
49123448, 49123449, 49123450, 49123451, 49123452, 49123453,
49123454, 49123455, 49123456, 49123457, 49123458, 49123459,
49123460, 49123461, 49123462, 49123463, 49123464, 49123465,
49123466, 49123467, 49123468, 49123469, 49123470, 49123471,
49123472, 49123473, 49123474, 49123475, 49123476, 49123477,
49123478, 49123479, 49123480, 49123481, 49123482, 49123483,
49123484, 49123485, 49123486, 49123487, 49123488, 49123489,
49123490, 49123491, 49123492, 49123493, 49123494, 49123495,
49123496, 49123497, 49123498, 49123499, 33554333, 33554334,
33554335, 33554336, 33554337])
或甚至簡單地寫入到文件不打擾陣列:
with open('yourfile', 'w') as file:
file.write(str(mynewdata).replace(',', ';'))
最後爲什麼你轉換你的整數floats
一張紙條:
>>> np.empty((0))
array([], dtype=float64)
的np.empty
創建一個float數組等追加/連擊將總是導致float
陣列。使用np.empty(0, int)
如果你想要一個整數數組:
>>> np.empty(0, int)
array([], dtype=int64)
「mydata」,「numbers_list」和「numbers」的數據類型是什麼? – Benjamin
mydata:int64,數字:int64,numbers_list變爲float64 – SLglider
注意:base_dir vs basedir。當我運行你的代碼時,輸出是正確的,範圍爲4.91E + 07。 – Benjamin