小编Joe*_*lip的帖子

Python将numpy数组插入sqlite3数据库

我正在尝试在sqlite3数据库中存储大约1000个浮点数的numpy数组,但我不断收到错误"InterfaceError:Error binding parameter 1 - 可能不支持的类型".

我的印象是BLOB数据类型可能是任何东西,但它肯定不适用于numpy数组.这是我试过的:

import sqlite3 as sql
import numpy as np
con = sql.connect('test.bd',isolation_level=None)
cur = con.cursor()
cur.execute("CREATE TABLE foobar (id INTEGER PRIMARY KEY, array BLOB)")
cur.execute("INSERT INTO foobar VALUES (?,?)", (None,np.arange(0,500,0.5)))
con.commit()
Run Code Online (Sandbox Code Playgroud)

我可以使用另一个模块将numpy数组放入表中吗?或者我可以将numpy数组转换为Python中的另一种形式(如我可以拆分的列表或字符串),sqlite会接受吗?绩效不是优先事项.我只是想让它起作用!

谢谢!

python sqlite numpy

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

sqlite3:从命令行将模式转储到.sql文件中

我试图将架构test.db仅(即没有数据)转储到schema.sqlOS X中从命令行调用的文件中,而不启动sqlite3.

我知道我能做到:

sqlite3
.open test.db
.output schema.sql
.schema
.quit
Run Code Online (Sandbox Code Playgroud)

但是我不想启动sqlite 3.这......

echo '.output schema.sql' | sqlite3 test.db
Run Code Online (Sandbox Code Playgroud)

创建空文件,但这...

echo '.schema' | sqlite3 test.db
Run Code Online (Sandbox Code Playgroud)

仅打印架构.如何从终端将其写入该文件?

谢谢!

sql sqlite macos terminal

12
推荐指数
2
解决办法
8615
查看次数

向Numpy ndarray添加元数据评论

我有一个三个大型阵列的Numpy ndarray,我只想将路径存储到某处生成数据的文件中.一些玩具数据:

A = array([[  6.52479351e-01,   6.54686928e-01,   6.56884432e-01, ...,
              2.55901861e+00,   2.56199503e+00,   2.56498647e+00],
           [             nan,              nan,   9.37914686e-17, ...,
              1.01366425e-16,   3.20371075e-16,  -6.33655223e-17],
           [             nan,              nan,   8.52057308e-17, ...,
              4.26943463e-16,   1.51422386e-16,   1.55097437e-16]],                 
           dtype=float32)
Run Code Online (Sandbox Code Playgroud)

我不能将它作为数组附加到ndarray,因为它需要与其他三个相同的长度.

我可以添加np.zeros(len(A[0]))并将第一个值作为字符串,以便我可以用A [-1] [0]检索它,但这看起来很荒谬.

是否有一些元数据键我可以用来存储字符串,/Documents/Data/foobar.txt'所以我可以用类似的东西检索它A.metadata.comment

谢谢!

python arrays numpy

9
推荐指数
2
解决办法
3143
查看次数

从 skimage 轮廓创建蒙版

我有一张我发现轮廓的图像,skimage.measure.find_contours()但现在我想为完全在最大闭合轮廓之外的像素创建一个蒙版。知道如何做到这一点吗?

修改文档中的示例:

import numpy as np
import matplotlib.pyplot as plt
from skimage import measure

# Construct some test data
x, y = np.ogrid[-np.pi:np.pi:100j, -np.pi:np.pi:100j]
r = np.sin(np.exp((np.sin(x)**2 + np.cos(y)**2)))

# Find contours at a constant value of 0.8
contours = measure.find_contours(r, 0.8)

# Select the largest contiguous contour
contour = sorted(contours, key=lambda x: len(x))[-1]

# Display the image and plot the contour
fig, ax = plt.subplots()
ax.imshow(r, interpolation='nearest', cmap=plt.cm.gray)
X, Y = ax.get_xlim(), ax.get_ylim()
ax.step(contour.T[1], contour.T[0], linewidth=2, c='r') …
Run Code Online (Sandbox Code Playgroud)

python contour scikit-image masked-array

6
推荐指数
3
解决办法
7896
查看次数

分段仿射变换+扭曲输出看起来很奇怪

我有一个图像,我试图使用skimage.PiecewiseAffineTransform和来扭曲skimage.warp。我有一组控制点 ( true) 映射到一组新的控制点 ( ideal),但扭曲没有返回我期望的结果。

在这个例子中,我有一个简单的波长梯度,我试图将其“拉直”成列。(您可能会问为什么我要查找轮廓和插值,但那是因为我实际上将此代码应用于更复杂的用例。我只是想重现这个简单示例的所有代码,这会导致相同的奇怪输出。)

为什么我的输出图像只是将输入图像扭曲成正方形和插图?我正在使用 Python 2.7.12 和 matplotlib 1.5.1。这是代码。

import matplotlib.pyplot as plt
import numpy as np
from skimage import measure, transform

true = np.array([range(i,i+10) for i in range(20)])
ideal = np.array([range(10)]*20)

# Find contours of ideal and true images and create list of control points for warp
true_control_pts = []
ideal_control_pts = []

for lam in ideal[0]:
    try:
        # Get the isowavelength contour in the true and ideal images …
Run Code Online (Sandbox Code Playgroud)

python numpy affinetransform python-2.7 scikit-image

5
推荐指数
1
解决办法
2916
查看次数

考虑集合中每个元素的数量(多重性),测试set是否为子集

我知道我可以测试set1是否是set2的子集:

{'a','b','c'} <= {'a','b','c','d','e'} # True
Run Code Online (Sandbox Code Playgroud)

但以下也是正确的:

{'a','a','b','c'} <= {'a','b','c','d','e'} # True
Run Code Online (Sandbox Code Playgroud)

我如何考虑集合中元素的出现次数,以便:

{'a','b','c'}     <= {'a','b','c','d','e'}      # True
{'a','a','b','c'} <= {'a','b','c','d','e'}      # False since 'a' is in set1 twice but set2 only once
{'a','a','b','c'} <= {'a','a','b','c','d','e'}  # True because both sets have two 'a' elements
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

A, B, C = ['a','a','b','c'], ['a','b','c','d','e'], ['a','a','b','c','d','e']
all([A.count(i) == B.count(i) for i in A]) # False
all([A.count(i) == C.count(i) for i in A]) # True
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一些更简洁的东西set(A).issubset(B,count=True)或一种方法来保持列表理解.谢谢!

python set subset multiplicity multiset

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

Python one-liner将float转换为string

我想将0.0到39.9之间的浮点数转换为字符串.如果分别为1,2或3,则用L,T或Y替换十位数.并附加一个M,如果它在那些.例如,22.3将返回T2.3,8.1将返回M8.1,依此类推.否则,返回浮动.

这段代码当然有效,但我想知道是否有更简单(如果不是单行)的解决方案.这是代码:

def specType(SpT):
  if 0 <= SpT <= 9.9:
    return 'M{}'.format(SpT)
  elif 10.0 <= SpT <= 19.9:
    return 'L{}'.format(SpT - 10)
  elif 20.0 <= SpT <= 29.9:
    return 'T{}'.format(SpT - 20)
  elif 30.0 <= SpT <= 39.9:
    return 'Y{}'.format(SpT - 30) 
  else:
    return SpT
Run Code Online (Sandbox Code Playgroud)

谢谢!

python

3
推荐指数
1
解决办法
189
查看次数

Python:添加布尔Numpy数组

我有三个列表:

a = np.array([True, True, False, False])
b = np.array([False, False, False, False])
c = np.array([False, False, False, True])
Run Code Online (Sandbox Code Playgroud)

我想添加数组,以便新数组只有False所有相应的元素都有False.例如,输出应为:

d = np.array([True, True, False, True])
Run Code Online (Sandbox Code Playgroud)

但是,d = np.add(a,b,c)退货:

d = np.array([True, True, False, False])
Run Code Online (Sandbox Code Playgroud)

为什么这样,我该如何解决?谢谢!

python boolean numpy

3
推荐指数
4
解决办法
7432
查看次数

在Python中,是"和"语句还是全部()更快?

在测试多个条件是否为True时,是and语句还是all()更快?例如:

if '1234'.isdigit() and '4567'.isdigit() and '7890'.isdigit(): 
    print "All are digits!"
Run Code Online (Sandbox Code Playgroud)

要么

if all(['1234'.isdigit(), '4567'.isdigit(), '7890'.isdigit()]): 
    print "All are digits!"
Run Code Online (Sandbox Code Playgroud)

谢谢!

python

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