bool-hybrid-array 9.10.20__tar.gz → 9.11.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bool_hybrid_array-9.10.20/bool_hybrid_array.egg-info → bool_hybrid_array-9.11.7}/PKG-INFO +53 -4
- bool_hybrid_array-9.10.20/PKG-INFO → bool_hybrid_array-9.11.7/README.md +600 -596
- bool_hybrid_array-9.11.7/bool_hybrid_array/__init__.py +29 -0
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array/__main__.py +28 -1
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array/core.py +115 -35
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array/int_array/__init__.py +15 -63
- bool_hybrid_array-9.10.20/README.md → bool_hybrid_array-9.11.7/bool_hybrid_array.egg-info/PKG-INFO +645 -556
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/requires.txt +3 -0
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/setup.py +11 -4
- bool_hybrid_array-9.10.20/bool_hybrid_array/__init__.py +0 -54
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/LICENSE +0 -0
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array//347/247/230/345/257/206.md" +0 -0
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/SOURCES.txt +0 -0
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/dependency_links.txt +0 -0
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/top_level.txt +0 -0
- {bool_hybrid_array-9.10.20 → bool_hybrid_array-9.11.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bool-hybrid-array
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.11.7
|
|
4
4
|
Summary: 一个高效的布尔数组(密集+稀疏混合存储,节省内存)
|
|
5
5
|
Home-page: https://github.com/BKsell/bool-hybrid-array
|
|
6
6
|
Author: 蔡靖杰
|
|
@@ -17,6 +17,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
22
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
20
23
|
Classifier: License :: OSI Approved :: MIT License
|
|
21
24
|
Classifier: Operating System :: OS Independent
|
|
22
25
|
Requires-Python: >=3.8
|
|
@@ -24,6 +27,8 @@ Description-Content-Type: text/markdown
|
|
|
24
27
|
License-File: LICENSE
|
|
25
28
|
Requires-Dist: numpy>=1.19.0
|
|
26
29
|
Provides-Extra: int-array
|
|
30
|
+
Provides-Extra: numba-opt
|
|
31
|
+
Requires-Dist: numba>=0.55.0; extra == "numba-opt"
|
|
27
32
|
Dynamic: author
|
|
28
33
|
Dynamic: author-email
|
|
29
34
|
Dynamic: classifier
|
|
@@ -40,10 +45,17 @@ Dynamic: summary
|
|
|
40
45
|
|
|
41
46
|
# BoolHybridArray:高效的布尔混合数组库
|
|
42
47
|
|
|
48
|
+
<!-- 月下载量(核心推荐)+ 周下载量 + 总下载量 -->
|
|
49
|
+
[](https://pepy.tech/project/bool-hybrid-array)
|
|
50
|
+
[](https://pepy.tech/project/bool-hybrid-array)
|
|
51
|
+
[](https://pepy.tech/project/bool-hybrid-array)
|
|
52
|
+
|
|
43
53
|
一个专为布尔值优化的数组类,能够根据数据特征自动在密集存储和稀疏存储模式间切换,兼顾性能和内存效率。
|
|
44
54
|
|
|
45
55
|
## ***注:大版本号更新并非不兼容更新,而是重大更新***
|
|
46
56
|
|
|
57
|
+
注:当API完全稳定时就会发布版本规则较严谨的new-1.0.0版本,预期为10.x版本结束后
|
|
58
|
+
|
|
47
59
|
***注意:目前社区中若存在名称类似(如包含 “bool-hybrid-array”+ 后缀、boolean\_array、validate.io-boolean-array)的库,均与本项目(bool-hybrid-array)无关联,本项目的所有功能设计、代码实现均为独立开发;***
|
|
48
60
|
***其他平台里的类似名库绝不是我的库***
|
|
49
61
|
|
|
@@ -141,7 +153,7 @@ big_arr = BoolHybridArr([i % 100 == 0 for i in range(10000)])
|
|
|
141
153
|
|
|
142
154
|
# 查看存储模式(此时应为稀疏模式)
|
|
143
155
|
|
|
144
|
-
print(repr(big_arr)) # 输出: BoolHybridArray(split_index=100,size=10000,is_sparse=True,small_len=
|
|
156
|
+
print(repr(big_arr)) # 输出: BoolHybridArray(split_index=100, size=10000, is_sparse=True, small_len=101, large_len=98)
|
|
145
157
|
|
|
146
158
|
# 自动优化存储
|
|
147
159
|
|
|
@@ -411,6 +423,27 @@ try:
|
|
|
411
423
|
except OverflowError as e:
|
|
412
424
|
print(f"\n❌ NumPy存储失败:{e}")
|
|
413
425
|
|
|
426
|
+
#BHA_Queue(9.11.5版本新增)
|
|
427
|
+
|
|
428
|
+
q = BHA_Queue([T, F, T, T, F])
|
|
429
|
+
|
|
430
|
+
print(f"初始化队列: {q}") # 输出:BHA_Queue([T,F,T,T,F])
|
|
431
|
+
|
|
432
|
+
q.enqueue(T)
|
|
433
|
+
|
|
434
|
+
q.enqueue(F)
|
|
435
|
+
|
|
436
|
+
print(f"入队2个元素后: {q}") # 输出:BHA_Queue([T,F,T,T,F,T,F])
|
|
437
|
+
|
|
438
|
+
# 3. 出队(dequeue,均摊O(1),仅首次触发转移)
|
|
439
|
+
|
|
440
|
+
print(f"第一次出队: {q.dequeue()}") # 输出:T(触发 self.a → self.b 转移,仅1次)
|
|
441
|
+
|
|
442
|
+
print(f"第二次出队: {q.dequeue()}") # 输出:F(直接从 self.b 弹出,纯O(1))
|
|
443
|
+
|
|
444
|
+
print(f"出队2个元素后: {q}") # 输出:BHA_Queue([T,T,F,T,F])
|
|
445
|
+
|
|
446
|
+
|
|
414
447
|
```
|
|
415
448
|
|
|
416
449
|
## 性能优势
|
|
@@ -478,7 +511,7 @@ except OverflowError as e:
|
|
|
478
511
|
* **8.2.0**:支持哈希
|
|
479
512
|
* **8.2.1**:修复8.2.0版本中的NameError
|
|
480
513
|
* **8.2.2**:修复8.2.1版本中的IndexError
|
|
481
|
-
-
|
|
514
|
+
- **9.0.0**:详情见上
|
|
482
515
|
* **9.0.1**:小更新,优化optimize方法
|
|
483
516
|
* **9.1.0**:新增二维数组的optimize与memory\_usage,优化二维数组的位运算,给BHA\_Bool新增__rand__、**ror**、__rxor__等等
|
|
484
517
|
* **9.1.1**:修复9.1.0版本中的TypeError: unsupported operand type(s) for +: 'int' and 'method'错误
|
|
@@ -570,6 +603,18 @@ except OverflowError as e:
|
|
|
570
603
|
* **9.10.18.post4**:尝试修复“满屏错误”的问题×3
|
|
571
604
|
* **9.10.19**:和9.10.18.post4相同,正式版本发布
|
|
572
605
|
* **9.10.20**:优化性能,增加BHA_jit_log日志
|
|
606
|
+
* **9.10.21**:优化Ask_BHA,移除BHA_jit_log日志
|
|
607
|
+
* **9.10.22**:进一步优化Ask_BHA的性能
|
|
608
|
+
* **9.11.0**:新增对7.3.10以上版本的PyPy解释器的支持
|
|
609
|
+
* **9.11.1**:修复PyPy解释器下的保护机制过度保护bug
|
|
610
|
+
* **9.11.2**:尝试修复IntHybridArray索引修改的错误
|
|
611
|
+
* **9.11.3**:修复NameError: name 'lst' is not defined. Did you mean: 'list'?错误
|
|
612
|
+
* **9.11.4**:修复TypeError: __dict__ must be set to a dictionary, not a 'IntHybridArray'的错误
|
|
613
|
+
* **9.11.5**:新增BHA_Queue双栈实现队列
|
|
614
|
+
* **9.11.6**:修复从9.11.3版本开始cpython用户无法安装bool-hybrid-array包的问题
|
|
615
|
+
* **9.11.7**:修复TypeError: 'map' object is not reversible的错误
|
|
616
|
+
|
|
617
|
+
|
|
573
618
|
|
|
574
619
|
|
|
575
620
|
## **彩蛋:**
|
|
@@ -584,7 +629,11 @@ except OverflowError as e:
|
|
|
584
629
|
* A:BoolHybridArray是本库中的**核心类**,所有函数都是围绕他进行的,但需要`split_index`,`size`,`is_sparse`;
|
|
585
630
|
BoolHybridArr是一个**函数**,用于把一个可迭代对象转为`BoolHybridArray`类
|
|
586
631
|
* Q:为什么不建议把太大的本类型数组打印?
|
|
587
|
-
* A
|
|
632
|
+
* A:虽然BoolHybridArray类型数组省内存,但字符串不省内存,一个`True`要4字节,一个`False`要5字节,连逗号都要占1字节(`numpy.ndarray`:我都比字符串省内存)
|
|
633
|
+
- Q:为什么使用在Windows终端使用PyPy时建议先调用`chcp 65001`再启动PyPy?
|
|
634
|
+
* A:因为本库有很多的的中文报错和打印,项目里也可能会有。Windows终端里的PyPy默认是GBK编码,有中文时会乱码。chcp 65001可以切换到UTF-8编码,防止乱码。
|
|
635
|
+
|
|
636
|
+
|
|
588
637
|
|
|
589
638
|
## 源代码和原理
|
|
590
639
|
|