我有一个关于(N,)维数组和(N,1)维数组之间转换的问题.例如,y是(2,)维度.
A=np.array([[1,2],[3,4]])
x=np.array([1,2])
y=np.dot(A,x)
y.shape
Out[6]: (2,)
Run Code Online (Sandbox Code Playgroud)
但以下将显示y2为(2,1)维度.
x2=x[:,np.newaxis]
y2=np.dot(A,x2)
y2.shape
Out[14]: (2, 1)
Run Code Online (Sandbox Code Playgroud)
在没有复制的情况下将y2转换回y的最有效方法是什么?
谢谢,汤姆
我想从c ++代码中返回一些数据作为numpy.array对象.我看了一下boost::python::numeric,但它的文档非常简洁.我可以得到一个例子,例如将一个(不是很大)返回vector<double>给python吗?我不介意做数据的副本.
使用SciPy/Numpy在Python中连接稀疏矩阵的最有效方法是什么?
我在这里使用了以下内容:
>>> np.hstack((X, X2))
array([ <49998x70000 sparse matrix of type '<class 'numpy.float64'>'
with 1135520 stored elements in Compressed Sparse Row format>,
<49998x70000 sparse matrix of type '<class 'numpy.int64'>'
with 1135520 stored elements in Compressed Sparse Row format>],
dtype=object)
Run Code Online (Sandbox Code Playgroud)
我想在回归中使用两个预测变量,但目前的格式显然不是我想要的.是否有可能获得以下内容:
<49998x1400000 sparse matrix of type '<class 'numpy.float64'>'
with 2271040 stored elements in Compressed Sparse Row format>
Run Code Online (Sandbox Code Playgroud)
它太大而无法转换为深层格式.
我有以下范围的numpy数据(usec时间戳的增量):
array([ 4.312, 4.317, 4.316, 4.32 , 4.316, 4.316, 4.319, 4.317,
4.317, 4.316, 4.318, 4.316, 4.318, 4.316, 4.318, 4.317,
4.317, 4.317, 4.316, 4.317, 4.318, 4.316, 4.318, 4.316,
4.318, 4.316, 4.317, 4.317, 4.318, 4.316, 4.317, 4.317,
4.317, 4.317, 4.317, 4.316, 4.319, 4.315, 4.319, 4.315,
4.319, 4.315, 4.316, 4.319, 4.317, 4.317, 4.317, 4.318,
4.315, 4.317, 4.317, 4.317, 4.319, 4.314, 4.32 , 4.315,
4.317, 4.318, 4.315, 4.318, 4.317, 4.317, 4.317, 4.316,
4.317, 4.318, 4.317, 4.317, 4.317, 4.315, 4.319, 4.317,
4.315, 4.319, 4.316, 4.318, …Run Code Online (Sandbox Code Playgroud) 在Cython文档的教程中,有numpy模块的cimport和import语句:
import numpy as np
cimport numpy as np
Run Code Online (Sandbox Code Playgroud)
我发现这个约定在numpy/cython用户中很受欢迎.
这看起来很奇怪的我,因为他们都命名为NP.在哪部分代码中,使用了导入/ cimported np?为什么cython编译器不会混淆它们?
np.sum和之间有什么区别np.add.reduce?
虽然文档很明确:
例如,add.reduce()等效于sum().
两者的性能似乎完全不同:相对较小的阵列大小add.reduce大约快两倍.
$ python -mtimeit -s"import numpy as np; a = np.random.rand(100); summ=np.sum" "summ(a)"
100000 loops, best of 3: 2.11 usec per loop
$ python -mtimeit -s"import numpy as np; a = np.random.rand(100); summ=np.add.reduce" "summ(a)"
1000000 loops, best of 3: 0.81 usec per loop
$ python -mtimeit -s"import numpy as np; a = np.random.rand(1000); summ=np.sum" "summ(a)"
100000 loops, best of 3: 2.78 usec per loop
$ python -mtimeit -s"import numpy as …Run Code Online (Sandbox Code Playgroud) some_string.split('')在python中有什么好办法?此语法给出错误:
a = '1111'
a.split('')
ValueError: empty separator
Run Code Online (Sandbox Code Playgroud)
我想获得:
['1', '1', '1', '1']
Run Code Online (Sandbox Code Playgroud) 在我生成的数组中,我有一个图像读入numpy中有相当多的像素.
我计算了一个包含256个值的查找表.现在我想做以下事情:
for i in image.rows:
for j in image.cols:
mapped_image[i,j] = lut[image[i,j]]
Run Code Online (Sandbox Code Playgroud)
是的,这基本上就像一个人.
唯一的问题是:我想做到高效并在python中调用该循环将让我等待几秒钟才能完成.
我知道numpy.vectorize(),它只是一个调用相同python代码的便捷函数.
我有:
d = [1,'q','3', None, 'temp']
Run Code Online (Sandbox Code Playgroud)
我想将None值替换为'None'或任何字符串
预期效果:
d = [1,'q','3', 'None', 'temp']
Run Code Online (Sandbox Code Playgroud)
尝试替换字符串和for循环但我得到错误:
TypeError: expected a character buffer object
Run Code Online (Sandbox Code Playgroud) I am creating symmetric matrices/arrays in Python with NumPy, using a standard method:
x = rand(500,500)
x = (x+x.T)
all(x==x.T)
> True
Run Code Online (Sandbox Code Playgroud)
Now let's be clever:
x = rand(500,500)
x += x.T
all(x==x.T)
> False
Run Code Online (Sandbox Code Playgroud)
Wait, what?
x==x.T
> array([[ True, True, True, ..., False, False, False],
[ True, True, True, ..., False, False, False],
[ True, True, True, ..., False, False, False],
...,
[False, False, False, ..., True, True, True],
[False, False, False, ..., True, True, True],
[False, False, …Run Code Online (Sandbox Code Playgroud) numpy ×8
python ×8
arrays ×4
boost-python ×1
c++ ×1
cython ×1
list ×1
matplotlib ×1
python-2.x ×1
replace ×1
scipy ×1
split ×1
string ×1