我的数组是一个2D矩阵,它除了负值和正值外还有numpy.nan值:
>>> array
array([[ nan, nan, nan, ..., -0.04891211,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
...,
[-0.02510989, -0.02520096, -0.02669156, ..., nan,
nan, nan],
[-0.02725595, -0.02715945, -0.0286231 , ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
我想用一个数字替换所有正数,用另一个数字替换所有负数.
如何使用python/numpy执行该操作?
(为了记录,矩阵是geoimage的结果,我想进行分类)
我已经建立了一个非常简单的表,用于表示2D环境中的点。Id列是每个点的id,geom列是空间中该点的二进制表示形式:
表 public.foo
Column | Type | Modifiers
--------+----------------------+--------------------------------------------
id | integer | not null default nextval('mseq'::regclass)
geom | geometry(Point,2100) |
Run Code Online (Sandbox Code Playgroud)
索引:
"foo_pkey" PRIMARY KEY, btree (id)
"foo_index_gist_geom" gist (geom)
Run Code Online (Sandbox Code Playgroud)
为了找到每个点到下一个点的距离,我正在使用此窗口函数:
select
id,
st_distance(geom,lag(geom,1) over (order by id asc)) distance
from
foo;
Run Code Online (Sandbox Code Playgroud)
结果如下(st_distance(geom,geom)给出两个geom数据类型之间的距离):
id | distance
----+------------------
1 |
2 | 27746.1563439608
3 | 57361.8216245281
4 | 34563.3607734946
5 | 23421.2022073633
6 | 41367.8247514439
....
distance(1) -> null since its the first point
distance(2) -> ~28km from point 1 to …
Run Code Online (Sandbox Code Playgroud) 我有一个布尔(numpy)数组.而且我想知道Falses之间出现了多少次'True'.
例如,样本列表:
b_List = [T,T,T,F,F,F,F,T,T,T,F,F,T,F]
Run Code Online (Sandbox Code Playgroud)
应该产生
ml = [3,3,1]
Run Code Online (Sandbox Code Playgroud)
我最初的尝试是尝试这个片段:
i = 0
ml = []
for el in b_List:
if (b_List):
i += 1
ml.append(i)
i = 0
Run Code Online (Sandbox Code Playgroud)
但是它会在b_List中为每个F添加以ml为单位的元素.
编辑
谢谢大家的答案.可悲的是,我可以'接受所有答案都是正确的.我接受了Akavall的答案,因为他提到了我最初的尝试(我知道我现在做错了什么),并且还对Mark和Ashwinis的帖子进行了比较.
请不要将接受的解决方案作为定义答案,因为其他建议都引入了同样有效的替代方法
我有一个表格,其中包含从气象观测中收集的数据。数据准备不充分,因此在插入数据库时出错。在最近的一次浏览中,我发现了不应该存在的非数字数据。
如何选择存在非数值的行?
表的布局如下:
#\d data.tempe
Table "data.tempe"
Column | Type | Modifiers
------------+-----------------------+-----------
id-station | integer |
year | integer |
t1 | character varying(25) |
t2 | character varying(25) |
t3 | character varying(25) |
t4 | character varying(25) |
t5 | character varying(25) |
t6 | character varying(25) |
t7 | character varying(25) |
t8 | character varying(25) |
t9 | character varying(25) |
t10 | character varying(25) |
t11 | character varying(25) |
t12 | character varying(25) …
Run Code Online (Sandbox Code Playgroud) 编辑:感谢您对如何完成我想要做的事情的回复,但问题是关于WHY range().如果您在一步中尝试,则append()返回None,如果您两个,它为什么会有效 -步骤程序.
我试图创建一个数字列表,但扭曲.在我的列表开始时我不想要几个数字:
mlist = [0, 5, 6, 7, ...]
Run Code Online (Sandbox Code Playgroud)
所以我想做以下事情:
mlist = range(5,n+1).append(0)
Run Code Online (Sandbox Code Playgroud)
但默默地失败,因为type(mlist)
之后等于NoneType
?!(相关:type(range(5,10)
评估list
类型)
如果我尝试分两步完成,例如:
>>> mlist = range(5,10)
#and then
>>> mlist.append(0)
>>> mlist
[5, 6, 7, 8, 9, 10, 0]
Run Code Online (Sandbox Code Playgroud)
发生了什么?
有人可以向我解释一下"重构"或"重构"是什么意思吗?
我认为这个主题过于宽泛,无法涵盖每一个细节,但有人可以提供一个简单的术语解释吗?
python ×3
numpy ×2
postgresql ×2
algorithm ×1
c# ×1
gdal ×1
open-source ×1
postgis ×1
python-2.x ×1
refactoring ×1
sql ×1
statistics ×1
theory ×1