这是我拥有的 numpy.ndarray:
a=[[[ 0.01, 0.02 ]], [[ 0.03, 0.04 ]]]
我希望它转换为
a = [(0.01, 0.02), (0.03, 0.04)]
目前我只使用以下for循环,但我不确定它是否足够有效:
b = []
for point in a:
b.append((point[0][0], point[0][1]))
print(b)
Run Code Online (Sandbox Code Playgroud)
我发现了一个类似的问题,但没有元组,所以建议的ravel().tolist()方法在这里对我不起作用。
我在以前的桌面上运行了这段代码,效果很好:
use serde::Deserialize;
#[derive(Deserialize)]
struct Foo {
bar: i64,
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
货物.toml:
[dependencies]
serde = "1.0"
Run Code Online (Sandbox Code Playgroud)
但现在我明白了
use serde::Deserialize;
#[derive(Deserialize)]
struct Foo {
bar: i64,
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
什么会导致问题?我正在使用 Rust 1.33.0。
我有以下循环:
dict1 = {}
dict2 = {}
for (i, row) in df[['col1', 'col2', 'col3']].iterrows():
dict1[row['col1']] = row['col2']
dict2[row['col1']] = row['col3']
Run Code Online (Sandbox Code Playgroud)
据我所知,这个循环真的很慢(我的数据帧中有大约7万行df)。
有什么办法可以加快速度吗?我在Google上搜索了一下,他们说我应该使用df.apply()而不是.iterrows()。
我有以下结构:
struct Point {
double x, y;
std::string name;
vector<vector<double>> matrix;
}
Run Code Online (Sandbox Code Playgroud)
我matrix从一开始就知道除最后一个属性以外的所有属性,为了进行计算,matrix我必须知道其他一些对象。
不过,我想保持matrix的Point结构。由于没有point_id这样的东西,所以我可以创建地图。
只是使用(x, y, name)构造函数然后matrix在代码中稍后进行显式设置是一种好样式。