在过去的几天里,我一直在玩Numpy和matplotlib.我在尝试使matplotlib绘制函数而不阻塞执行时遇到问题.我知道在这里已经有很多线索提出了类似的问题,而且我已经搜索了很多但是没有设法让这项工作成功.
我曾经尝试过使用show(block = False),但我得到的只是一个冻结的窗口.如果我只是调用show(),则会正确绘制结果,但会阻止执行直到窗口关闭.从我读过的其他主题,我怀疑show(block = False)是否有效取决于后端.它是否正确?我的后端是Qt4Agg.你能看看我的代码并告诉我你是否看错了吗?这是我的代码.谢谢你的帮助.
from math import *
from matplotlib import pyplot as plt
print plt.get_backend()
def main():
x = range(-50, 51, 1)
for pow in range(1,5): # plot x^1, x^2, ..., x^4
y = [Xi**pow for Xi in x]
print y
plt.plot(x, y)
plt.draw()
#plt.show() #this plots correctly, but blocks execution.
plt.show(block=False) #this creates an empty frozen window.
_ = raw_input("Press [enter] to continue.")
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
PS.我忘了说我想在每次绘制内容时更新现有窗口,而不是创建一个新窗口.
我有一个2D Numpy数组,其中我想将每列归一化为零均值和单位方差.由于我主要习惯于C++,我所使用的方法是使用循环迭代列中的元素并执行必要的操作,然后对所有列重复此操作.我想知道一个pythonic的方法.
让class_input_data我的2D数组.我可以得到列的意思是:
column_mean = numpy.sum(class_input_data, axis = 0)/class_input_data.shape[0]
Run Code Online (Sandbox Code Playgroud)
然后我通过以下方法减去所有列的均值:
class_input_data = class_input_data - column_mean
Run Code Online (Sandbox Code Playgroud)
到目前为止,数据应为零均值.但是,价值:
numpy.sum(class_input_data, axis = 0)
Run Code Online (Sandbox Code Playgroud)
不等于0,暗示我在规范化中做错了.By不等于0,我不是指可归因于浮点不准确的非常小的数字.
我已经重载了少于操作pair<int,int>,因此我可以以特定方式对矢量进行排序.我希望它按照一对中的第一个键按升序排列,如果第一个键相等,那么根据第二个键,我希望它按降序排列.
问题是sort函数似乎没有使用重载<运算符,但如果<在2对上调用,则返回的输出是我所期望的.我附上了一段代码,我用它来测试:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool operator<(pair<int, int> &a, pair<int, int> &b)
{
if (a.first < b.first) return true;
else if ((a.first == b.first) && (a.second > b.second)) return true;
return false;
}
int main() {
vector<pair<int, int>> test {make_pair(1,10), make_pair(3,4), make_pair(3,8), make_pair(6, 23), make_pair(1,6)};
sort(test.begin(), test.end());
for (int i = 0; i < test.size(); i++)
cout << test[i].first << " - " << test[i].second << " "; …Run Code Online (Sandbox Code Playgroud) 我正在一个项目中,我需要从音频信号中提取梅尔倒谱频率系数(MFCC)。此过程的第一步是将音频文件读入Python。
我拥有的音频文件以.sph格式存储。我找不到直接将这些文件读入Python的方法。我想要采样率,以及一个带有数据的NumPy数组,类似于wav读取的工作方式。
由于我要处理的音频文件很大,因此我不希望转换为.wav格式进行读取。您能否建议一种可行的方法?
如何更改 所使用的整数bitset?假设我曾经bitset声明一个变量mybitset来存储数字的位,例如 32。在进行一些操作后,我想mybitset存储其他数字的位,例如 63。我如何实现这一点?
我在下面添加了一小段示例代码来帮助解释。
bitset<32> mybits(32);
....
mybits(63); // gives compilation error here, stating "no match for call to '(std::bitset<32u>) (uint&)'"
Run Code Online (Sandbox Code Playgroud)
我觉得应该有一些简单的方法来做到这一点,但还没有找到任何东西。
表达式之间有什么不同:
int a, b;
bool p = false;
while (cin >> a >> b and not p) { // code }
// and:
int a, b;
bool p = false;
while (not p and cin >> a >> b) { // code }
Run Code Online (Sandbox Code Playgroud) 有人知道使用OpenCV 2.4的Brief实现的链接吗?问候.
PS:我知道这些问题一般不受欢迎,因为主要关注的是你所做的工作.但是有一个类似的问题很受欢迎.
这些问题的答案之一表明了SIFT的通用方式,可以扩展到Brief.这是我稍微修改过的代码.
#include <opencv2/nonfree/nonfree.hpp>
#include <opencv2/highgui/highgui.hpp>
//using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat image = imread("load02.jpg", CV_LOAD_IMAGE_GRAYSCALE);
cv::initModule_nonfree();
// Create smart pointer for SIFT feature detector.
Ptr<FeatureDetector> featureDetector = FeatureDetector::create("HARRIS"); // "BRIEF was initially written. Changed after answer."
vector<KeyPoint> keypoints;
// Detect the keypoints
featureDetector->detect(image, keypoints); // NOTE: featureDetector is a pointer hence the '->'.
//Similarly, we create a smart pointer to the SIFT extractor.
Ptr<DescriptorExtractor> featureExtractor = DescriptorExtractor::create("BRIEF");
// …Run Code Online (Sandbox Code Playgroud) c++ ×4
python ×3
audio ×1
loops ×1
matplotlib ×1
numpy ×1
opencv ×1
plot ×1
sorting ×1
std-bitset ×1
while-loop ×1