Los*_*ica 6 arrays merge numpy python-3.x
我试图合并具有相同数量的参数的两个数组.
输入:
first = [[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775],
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745],
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745]]
second = [[1],
[2],
[3]]
Run Code Online (Sandbox Code Playgroud)
我的预期产量:
final = [[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775, 1],
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745, 2],
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745, 3]]
Run Code Online (Sandbox Code Playgroud)
要做到这一点,我创建简单的循环:
for i in first:
for j in second:
final += np.append(j, i)
Run Code Online (Sandbox Code Playgroud)
我得到了我填补我遗失的东西.首先,我的循环非常慢.其次我的数据非常多,我有超过2毫升的行循环.所以我尝试使用此代码找到更快的方法:
final = [np.append(i, second[0]) for i in first]
Run Code Online (Sandbox Code Playgroud)
它的工作速度比前一个循环快得多,但它仅附加第二个数组的第一个值.你能帮助我吗?
mfo*_*rez 12
使用np.array然后np.concatenate,
import numpy as np
first = np.array([[650001.88, 300442.2, 18.73, 0.575,
650002.094, 300441.668, 18.775],
[650001.96, 300443.4, 18.7, 0.65,
650002.571, 300443.182, 18.745],
[650002.95, 300442.54, 18.82, 0.473,
650003.056, 300442.085, 18.745]])
second = np.array([[1],
[2],
[3]])
np.concatenate((first, second), axis=1)
Run Code Online (Sandbox Code Playgroud)
哪里axis=1意味着我们想要水平连接.
这对我行得通
小智 6
用途np.column_stack:
import numpy as np
first = [[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775],
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745],
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745]]
second = [[1],
[2],
[3]]
np.column_stack([first, second])
Run Code Online (Sandbox Code Playgroud)
如果您需要它作为列表,请使用以下方法tolist:
np.column_stack([first, second]).tolist()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31704 次 |
| 最近记录: |