我想将一个numpy 2D数组复制到第三维.例如,如果我有这样的(2D)numpy数组:
import numpy as np
arr = np.array([[1,2],[1,2]])
# arr.shape = (2, 2)
Run Code Online (Sandbox Code Playgroud)
将它转换为一个3D矩阵,在新的维度中包含N个这样的副本,如N = 3:
new_arr = np.array([[[1,2],[1,2]],[[1,2],[1,2]],[[1,2],[1,2]]])
# new_arr.shape = (3, 2, 2)
Run Code Online (Sandbox Code Playgroud) 我正在尝试匹配两个图像的直方图(在MATLAB中,这可以使用imhistmatch).是否有标准Python库提供的等效函数?我看过OpenCV,scipy和numpy,但没有看到任何类似的功能.
Matlab允许您在没有警告的情况下覆盖内置函数.
例如,我max()用变量覆盖了函数,但是Matlab没有提醒我这个.只有在调用函数时才会抛出错误,并且无法帮助您查看实际问题:
min = 0;
max = 10;
x = linspace(min,max,20);
y = exp(x);
disp(['the value is: ', num2str(max(y))])
Run Code Online (Sandbox Code Playgroud)
错误信息:
Subscript indices must either be real positive integers or logicals.
Run Code Online (Sandbox Code Playgroud)
有没有办法在启动时或在设置文件中写保护所有Matlab语言以防止这种情况?
寻找一种优雅的方法将子字符串列表和它们之间的文本转换为字典中的键值对.例:
s = 'k1:some text k2:more text k3:and still more'
key_list = ['k1','k2','k3']
(missing code)
# s_dict = {'k1':'some text', 'k2':'more text', 'k3':'and still more'}
Run Code Online (Sandbox Code Playgroud)
这是可以使用str.find()等解决的,但我知道有一个比我一起攻击的更好的解决方案.
我正在尝试绘制几个(数千个)圆形对象 - 我没有太多使用python的经验.我有兴趣指定位置,半径和颜色.有没有更有效的方法来实现相同的结果?:
import matplotlib.pyplot as plt
xvals = [0,.1,.2,.3]
yvals = [0,.1,.2,.3]
rvals = [0,.1,.1,.1]
c1vals = [0,.1,0..1]
c2vals = [.1,0,.1,0]
c3vals = [.1,.1,.1,.1]
for q in range(0,4):
circle1=plt.Circle((xvals[q], yvals[q]), rvals[q], color=[0,0,0])
plt.gcf().gca().add_artist(circle1)
Run Code Online (Sandbox Code Playgroud) 对于以下命令
%time python test.py
Run Code Online (Sandbox Code Playgroud)
在这个脚本上,test.py
import numpy as np
from math import *
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
from scipy import stats
Run Code Online (Sandbox Code Playgroud)
我得到输出:
real 0m1.933s
user 0m1.322s
sys 0m0.282s
Run Code Online (Sandbox Code Playgroud)
有什么不对?或者进口需要多长时间?
我在python中有一个代码可以在python中渲染一些球形,如下所示:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import random
import mayavi
from mayavi import mlab
N = 4;
diams = .4*np.ones([N]);
xvals = np.arange(N);
yvals = np.zeros(N);
zvals = np.zeros(N);
pts = mlab.points3d(xvals, yvals, zvals, diams, scale_factor=1,transparent=True)
mlab.show()
Run Code Online (Sandbox Code Playgroud)
该图的默认视图会根据摄影机位置(较小的球体较小)增加失真。我想通过一些命令将其设置为平行投影(其他球体大小相同),以便它自动呈现。
我没有找到Google或文档的直接解决方案。谢谢!
在 python/numpy 中执行以下操作的最直接方法是什么?
xx < .5x对应于这些值的(原始)索引我已经pandas.DataFrame以属性的形式附加了一些元信息。我想保存/恢复df它,但它在保存过程中被删除:
import pandas as pd
from sklearn import datasets
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df.my_attribute = 'can I recover this attribute after saving?'
df.to_pickle('test.pkl')
new_df = pd.read_pickle('test.pkl')
new_df.my_attribute
# AttributeError: 'DataFrame' object has no attribute 'my_attribute'
Run Code Online (Sandbox Code Playgroud)
其他文件格式似乎更糟:如果您不小心,csv请json丢弃type,index或信息。column也许创建一个扩展的新类DataFrame?对想法持开放态度。
我有一个 2D numpy 数组,如下所示
array([[5, 0],
[3, 1],
[7, 0],
[2, 1]])
Run Code Online (Sandbox Code Playgroud)
我想按每列(从右到左)进行(子)排序以获得以下结果:
array([[5, 0],
[7, 0],
[2, 1],
[3, 1]])
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 numpy 中做到这一点?