Questions tagged «numpy»

NumPy是Python编程语言的科学和数字计算扩展。

5
如何将sklearn fit_transform与pandas一起使用并返回数据框而不是numpy数组?
我想将缩放比例(使用来自sklearn.preprocessing的StandardScaler())应用于熊猫数据框。以下代码返回一个numpy数组,因此我丢失了所有列名和索引。这不是我想要的。 features = df[["col1", "col2", "col3", "col4"]] autoscaler = StandardScaler() features = autoscaler.fit_transform(features) 我在网上找到的“解决方案”是: features = features.apply(lambda x: autoscaler.fit_transform(x)) 它似乎可以工作,但是会导致弃用警告: /usr/lib/python3.5/site-packages/sklearn/preprocessing/data.py:583:DeprecationWarning:在数据中0.1d中弃用一维数组,在0.19中会引发ValueError。如果数据具有单个功能,则使用X.reshape(-1,1)来重塑数据,如果包含单个样本,则使用X.reshape(1,-1)来重塑数据。 因此,我尝试: features = features.apply(lambda x: autoscaler.fit_transform(x.reshape(-1, 1))) 但这给出了: 追溯(最近一次通话最近):文件“ ./analyse.py”,第91行,在features = features.apply(lambda x:autoscaler.fit_transform(x.reshape(-1,1)))中,文件“ / usr / lib / python3.5 / site-packages / pandas / core / frame.py“,第3972行,在apply返回self._apply_standard(f,axis,reduce = reduce)文件” …






3
用numpy将csv加载到二维矩阵中进行绘图
鉴于此CSV文件: "A","B","C","D","E","F","timestamp" 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12 我只是想将其加载为3行7列的矩阵/ ndarray。但是,由于某种原因,我能从numpy中得到的只有一个具有3行(每行一个)且没有列的ndarray。 r = np.genfromtxt(fname,delimiter=',',dtype=None, names=True) print r print r.shape [ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)] (3,) 我可以手动迭代并将其修改为所需的形状,但这似乎很愚蠢。我只想将其加载为适当的矩阵,以便可以像在matlab中一样将其切成不同的维度并绘制出来。
78 python  arrays  csv  numpy  reshape 

4
如何在numpy的数组中索引轴?
从Numpy的教程中,可以使用整数对轴进行索引,例如0用于列,1用于行,但是我不明白为什么用这种方式对它们进行索引?当处理多维数组时,如何计算每个轴的索引?
78 python  numpy 

1
NumPy:以n为底的对数
从有关对数的numpy文档中,我发现了以e,2和10为底取对数的函数: import numpy as np np.log(np.e**3) #3.0 np.log2(2**3) #3.0 np.log10(10**3) #3.0 但是,如何在numpy中使用以n为底的对数(例如42)?
78 python  math  numpy  logarithm 


10
如何在keras中获得可复制的结果
每次我imdb_lstm.py从Keras框架(https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py)运行示例时,我都会得到不同的结果(测试准确性)。代码包含np.random.seed(1337)在顶部,而不是任何keras进口。应该防止它为每次运行生成不同的数字。我想念什么? 更新:如何复制: 安装Keras(http://keras.io/) 多次执行https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py。它将训练模型并输出测试精度。 预期结果:每次运行的测试准确性均相同。 实际结果:每次运行的测试准确性都不同。 UPDATE2:我正在Windows 8.1和MinGW / msys上运行它,模块版本: theano 0.7.0 numpy 1.8.1 scipy 0.14.0c1 UPDATE3:我将问题缩小了一点。如果我在GPU上运行示例(设置theano标志device = gpu0),则每次都会获得不同的测试准确性,但是如果我在CPU上运行,那么一切都会按预期进行。我的显卡:NVIDIA GeForce GT 635)
78 python  numpy  theano  keras 

2
如何创建一个任意长度字符串的numpy数组?
我是Python的完整新手,但似乎给定的字符串可以(有效)为任意长度。也就是说,您可以string str添加并继续添加:str += "some stuff..."。有没有办法制作这样的字符串数组? 当我尝试此操作时,每个元素仅存储一个字符 strArr = numpy.empty(10, dtype='string') for i in range(0,10) strArr[i] = "test" 另一方面,我知道我可以初始化一定长度的字符串数组,即 strArr = numpy.empty(10, dtype='s256') 最多可以存储10个字符串,最多256个字符。
78 python  arrays  string  numpy 

2
使用RuntimeWarning进行numpy除法:在double_scalars中遇到无效值
我写了以下脚本: import numpy d = numpy.array([[1089, 1093]]) e = numpy.array([[1000, 4443]]) answer = numpy.exp(-3 * d) answer1 = numpy.exp(-3 * e) res = answer.sum()/answer1.sum() print res 但是我得到了这个结果,并发生了错误: nan C:\Users\Desktop\test.py:16: RuntimeWarning: invalid value encountered in double_scalars res = answer.sum()/answer1.sum() 看来输入元素太小,以至于python将它们设为零,但是除法确实有其结果。 如何解决这种问题?
77 python  numpy  warnings 

1
有什么方法可以将pythonappend与SWIG的新内置功能一起使用?
我有一个与SWIG完美搭配的小项目。特别是,我的某些函数返回std::vectors,在Python中将其转换为元组。现在,我做了很多数字运算,因此我只是将它们从C ++代码返回后,将它们转换为numpy数组。为此,我在SWIG中使用了以下内容。 %feature("pythonappend") My::Cool::Namespace::Data() const %{ if isinstance(val, tuple) : val = numpy.array(val) %} (实际上,有几个名为Data的函数,其中一些返回浮点数,这就是为什么我检查它val实际上是一个元组的原因。)这工作得很漂亮。 但是,我也想使用-builtin现在可用的标志。很少调用这些Data函数,并且大多数都是交互式的,因此它们的缓慢性不是问题,但是使用内置选项可以显着加快其他缓慢循环的速度。 问题是当我使用该标志时,pythonappend功能将被静默忽略。现在,Data再次返回一个元组。有什么办法我仍然可以返回numpy数组吗?我尝试使用类型映射,但结果变得一团糟。 编辑: Borealid很好地回答了这个问题。仅出于完整性考虑,我包括了一些相关但略微不同的类型映射,因为我是通过const引用返回的,并且我使用了vectors的向量(不要开始!)。这些差异是如此之大,以至于我不希望其他人为找出细微的差异而绊脚石。 %typemap(out) std::vector<int>& { npy_intp result_size = $1->size(); npy_intp dims[1] = { result_size }; PyArrayObject* npy_arr = (PyArrayObject*)PyArray_SimpleNew(1, dims, NPY_INT); int* dat = (int*) PyArray_DATA(npy_arr); for (size_t i = 0; i < …
77 python  numpy  swig 

4
随机播放vs置换numpy
numpy.random.shuffle(x)和之间有什么区别numpy.random.permutation(x)? 我已经阅读了文档页面,但是当我只想随机地对数组元素进行随机排列时,我不明白两者之间是否有任何区别。 确切地说,假设我有一个数组x=[1,4,2,8]。 如果我想生成x的随机排列,那么shuffle(x)和之间有什么区别permutation(x)?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.