小编Ale*_*ley的帖子

numpy.asarray:如何检查其结果dtype是数字?

我必须numpy.ndarray使用int,float或复数创建一个类似于数组的数据.

我希望用numpy.asarray功能做到这一点.

我不想给它一个严格的dtype说法,因为我要复杂的值转换为complex64complex128,彩车float32float64

但是,如果我只是简单地运行numpy.ndarray(some_unknown_data)并查看其结果的dtype,我怎么能理解,数据是数字,而不是对象或字符串或其他什么?

python arrays types numpy

22
推荐指数
1
解决办法
5713
查看次数

如何判断文件是否被gzip压缩?

我有一个Python程序,它将把文本文件作为输入.但是,其中一些文件可能是gzip压缩的.

是否存在跨平台,可以从Python方式使用以确定文件是否压缩为gzip?

以下是可靠的还是一个普通的文本文件'不小心'看起来像gzip一样足以让我得到误报?

try:
    gzip.GzipFile(filename, 'r')
    # compressed
    # ...
except:
    # not compressed
    # ...
Run Code Online (Sandbox Code Playgroud)

python compression gzip

21
推荐指数
3
解决办法
2万
查看次数

MATLAB的速度是Numpy的两倍

我是一名工程专业的学生,​​目前正在从MATLAB过渡到Python,用于数值模拟.我的印象是,对于基本的数组操作,Numpy会和MATLAB一样快.但是,对于我写的两个不同的程序来说,MATLAB的速度是Numpy的两倍.我用于Numpy(Python 3.3)的测试代码是:

import numpy as np
import time

a = np.random.rand(5000,5000,3)

tic = time.time()
a[:,:,0] = a[:,:,1]
a[:,:,2] = a[:,:,0]
a[:,:,1] = a[:,:,2]
toc = time.time() - tic
print(toc)
Run Code Online (Sandbox Code Playgroud)

鉴于我正在使用的MATLAB 2012a:

a = rand(5000,5000,3);

tic;
a(:,:,1) = a(:,:,2);
a(:,:,3) = a(:,:,1);
a(:,:,2) = a(:,:,3);
toc
Run Code Online (Sandbox Code Playgroud)

我使用的算法是在NASA 网站上使用的比较Numpy和MATLAB的算法.该网站显示Numpy在该算法的速度方面超过了MATLAB.然而,我的结果显示Numpy的模拟时间为0.49秒,MATLAB的模拟时间为0.29秒.我也在Numpy和Matlab上都运行了Gauss-Seidel解算器,我得到了类似的结果(16.5 s vs 9.5 s)

我是Python的新手,并且在编程方面不是非常有文化.我正在使用WinPython 64位Python发行版,但也试过Pythonxy无济于事.

我读过一篇应该提高性能的方法是使用MKL构建Numpy.不幸的是我不知道如何在Windows上执行此操作.我甚至需要这样做吗?

有什么建议?

python performance matlab numpy intel-mkl

21
推荐指数
1
解决办法
2万
查看次数

使用pandas按日期计算值的频率

假设我有以下时间序列:

Timestamp              Category
2014-10-16 15:05:17    Facebook
2014-10-16 14:56:37    Vimeo
2014-10-16 14:25:16    Facebook
2014-10-16 14:15:32    Facebook
2014-10-16 13:41:01    Facebook
2014-10-16 12:50:30    Orkut
2014-10-16 12:28:54    Facebook
2014-10-16 12:26:56    Facebook
2014-10-16 12:25:12    Facebook
...
2014-10-08 15:52:49    Youtube
2014-10-08 15:04:50    Youtube
2014-10-08 15:03:48    Vimeo
2014-10-08 15:02:27    Youtube
2014-10-08 15:01:56    DailyMotion
2014-10-08 13:27:28    Facebook
2014-10-08 13:01:08    Vimeo
2014-10-08 12:52:06    Facebook
2014-10-08 12:43:27    Facebook
Name: summary, Length: 600
Run Code Online (Sandbox Code Playgroud)

我想计算每周和每年的每个类别(时间序列中的唯一值/因子).

Example:

    Week/Year      Category      Count
    1/2014         Facebook      12
    1/2014         Google        5
    1/2014         Youtube       2
...    
    2/2014         Facebook      2 …
Run Code Online (Sandbox Code Playgroud)

datetime time-series count dataframe pandas

21
推荐指数
3
解决办法
2万
查看次数

相当于NumPy中的j

j在NumPy中,Octave的等价物是什么?我如何j在Python中使用?

在Octave:

octave:1> j
ans =  0 + 1i
octave:1> j*pi/4
ans =  0.00000 + 0.78540i
Run Code Online (Sandbox Code Playgroud)

但是在Python中:

>>> import numpy as np
>>> np.imag
<function imag at 0x2368140>
>>> np.imag(3)
array(0)
>>> np.imag(3,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: imag() takes exactly 1 argument (2 given)
>>> np.imag(32)
array(0)
>>> 
>>> 0+np.imag(1)
1
Run Code Online (Sandbox Code Playgroud)

python numpy complex-numbers

21
推荐指数
2
解决办法
4万
查看次数

具有一个falsey元素的numpy数组的真值似乎取决于dtype

import numpy as np
a = np.array([0])
b = np.array([None])
c = np.array([''])
d = np.array([' '])
Run Code Online (Sandbox Code Playgroud)

为什么我们应该有这种不一致性:

>>> bool(a)
False
>>> bool(b)
False
>>> bool(c)
True
>>> bool(d)
False
Run Code Online (Sandbox Code Playgroud)

python arrays types numpy truthiness

21
推荐指数
2
解决办法
509
查看次数

如何沿两个轴重复数组的元素?

我想分别沿轴0和轴1重复数组的元素M和N次:

import numpy as np

a = np.arange(12).reshape(3, 4)
b = a.repeat(2, 0).repeat(2, 1)
print(b)

[[ 0  0  1  1  2  2  3  3]
 [ 0  0  1  1  2  2  3  3]
 [ 4  4  5  5  6  6  7  7]
 [ 4  4  5  5  6  6  7  7]
 [ 8  8  9  9 10 10 11 11]
 [ 8  8  9  9 10 10 11 11]]
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有更好的方法而无需创建临时数组.

python numpy

19
推荐指数
3
解决办法
1528
查看次数

相当于NumPy中的"whos"命令

我是Numpy的新手并试图搜索一个函数来列出变量及其大小(矩阵维度和内存使用情况).

我基本上在寻找MATLAB和Octave中"whos"命令的等价物.在NumPy中是否存在任何此类命令?

python matlab numpy octave

19
推荐指数
2
解决办法
1万
查看次数

重复numpy数组的每个元素5次

import numpy as np

data = np.arange(-50,50,10)
print data

[-50 -40 -30 -20 -10   0  10  20  30  40]
Run Code Online (Sandbox Code Playgroud)

我想重复数据的每个元素5次,并按如下方式创建新数组:

ans = [-50 -50 -50 -50 -50 -40 -40 ... 40]
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

怎么样重复整个阵列5次?

ans =  [-50 -40 -30 -20 -10   0  10  20  30  40 -50 -40 -30 -20 -10   0  10  20  30  40 -50 -40 -30 -20 -10   0  10  20  30  40 -50 -40 -30 -20 -10   0  10  20  30  40 -50 -40 -30 -20 -10 …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy repeat

19
推荐指数
2
解决办法
2万
查看次数

hash()和id()之间的区别

我有两个用户定义的对象,比如说ab.
这两个对象都具有相同的hash值.
然而,id(a)并且id(b)是不平等的.

此外,

>>> a is b
False
>>> a == b
True
Run Code Online (Sandbox Code Playgroud)

从这个观察中,我可以推断出以下情况吗?

  • 不相等的对象可能具有相同的hash值.
  • 等于对象需要具有相同的id值.
  • 无论何时obj1 is obj2调用,id都会比较两个对象的值,而不是它们的hash值.

python hash equality

18
推荐指数
2
解决办法
5060
查看次数